#3886
Suma intervale
Se citesc de la tastură două numere naturale n
și m
, apoi un șir de n
numere naturale. Asupra șirului de numere se pot aplica m
operații de două feluri: modificarea unei valori din șir și respectiv determinarea sumei valorilor aflate în șir între două poziții date.
Problema | Suma intervale | Operații I/O |
![]() |
---|---|---|---|
Limita timp | 0.3 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #57801417 | Utilizator | |
Fișier | suma_intervale.cpp | Dimensiune | 1.74 KB |
Data încărcării | 17 Aprilie 2025, 12:07 | Scor / rezultat | Eroare de compilare |
suma_intervale.cpp: In constructor 'AINT::AINT(const int&)': suma_intervale.cpp:12:11: error: no match for 'operator=' (operand types are 'std::vector<int>' and 'std::vector<long long unsigned int>') segtree = vector<unsigned long long>(4 * n); ^ suma_intervale.cpp:12:11: note: candidates are: In file included from /usr/include/c++/4.8/vector:69:0, from /usr/include/c++/4.8/bits/random.h:34, from /usr/include/c++/4.8/random:50, from /usr/include/c++/4.8/bits/stl_algo.h:65, from /usr/include/c++/4.8/algorithm:62, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:64, from suma_intervale.cpp:1: /usr/include/c++/4.8/bits/vector.tcc:160:5: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>] vector<_Tp, _Alloc>:: ^ /usr/include/c++/4.8/bits/vector.tcc:160:5: note: no known conversion for argument 1 from 'std::vector<long long unsigned int>' to 'const std::vector<int>&' In file included from /usr/include/c++/4.8/vector:64:0, from /usr/include/c++/4.8/bits/random.h:34, from /usr/include/c++/4.8/random:50, from /usr/include/c++/4.8/bits/stl_algo.h:65, from /usr/include/c++/4.8/algorithm:62, from /usr/include/i386-linux-gnu/c++/4.8/bits/stdc++.h:64, from suma_intervale.cpp:1: /usr/include/c++/4.8/bits/stl_vector.h:439:7: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(std::vector<_Tp, _Alloc>&&) [with _Tp = int; _Alloc = std::allocator<int>] operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move()) ^ /usr/include/c++/4.8/bits/stl_vector.h:439:7: note: no known conversion for argument 1 from 'std::vector<long long unsigned int>' to 'std::vector<int>&&' /usr/include/c++/4.8/bits/stl_vector.h:461:7: note: std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(std::initializer_list<_Tp>) [with _Tp = int; _Alloc = std::allocator<int>] operator=(initializer_list<value_type> __l) ^ /usr/include/c++/4.8/bits/stl_vector.h:461:7: note: no known conversion for argument 1 from 'std::vector<long long unsigned int>' to 'std::initializer_list<int>' suma_intervale.cpp: In member function 'void AINT::build(long long int, int, int)': suma_intervale.cpp:28:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses] int mid = l + r >> 1; ^ suma_intervale.cpp: In member function 'void AINT::update(int, int, int, const int&)': suma_intervale.cpp:38:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses] int mid = l + r >> 1; ^ suma_intervale.cpp: In member function 'long long unsigned int AINT::query(long long int, int, int, const int&, const int&)': suma_intervale.cpp:49:15: warning: suggest parentheses around '+' inside '>>' [-Wparentheses] int mid = l + r >> 1, ret = 0; ^ suma_intervale.cpp: In function 'int main()': suma_intervale.cpp:66:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 1; i <= n; ++i) ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Suma intervale face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.