Pagini recente » Cod sursa (job #1968011) | Cod sursa (job #544125) | Cod sursa (job #628323) | Cod sursa (job #2326050) | Cod sursa (job #3247101)
#include <fstream>
#include <iostream>
using namespace std;
int v[15005], n;
void add(int x, int a) {
int i, poz;
i = 0;
poz = x;
while (poz < n) {
if (x % 2 == 0) {
v[poz] += a;
poz += ( 1 << i );
}
x /= 2;
i++;
}
}
int sum(int x) {
int i, poz, s;
poz = x - 1;
i = s = 0;
while (x > 0) {
if (x % 2 == 1) {
s += v[poz];
poz -= ( 1 << i );
}
x /= 2;
i++;
}
return s;
}
int main() {
int m, i, x, tip, a, b;
ifstream fin( "datorii.in" );
ofstream fout( "datorii.out" );
fin >> n >> m;
for (i = 0; i < n; i++) {
fin >> x;
add( i, x );
}
/*for (i = 0; i < n; i++) {
cout << v[i] << ' ';
}*/
for (i = 0; i < m; i++) {
fin >> tip >> a >> b;
if (tip == 0) {
add( a - 1, -b );
}
else {
fout << sum( b ) - sum( a - 1 ) << '\n';
}
}
return 0;
}