Pagini recente » Cod sursa (job #749892) | Borderou de evaluare (job #3226373) | Autentificare | Monitorul de evaluare | Cod sursa (job #3333673)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
#define MAXN 15002
//#define zeros(x) ( (x ^ (x - 1)) & x)
#define zeros(x) (x & (-x))
int N, M, x;
int A[MAXN];
void add(int x, int val) {
for (; x <= N; x += zeros(x)) A[x] += val;
}
int total(int x) {
int ans = 0;
for (; x > 0; x -= zeros(x)) ans += A[x];
return ans;
}
int main()
{
fin >> N >> M;
for (int i = 0; i < N; ++i) {
fin >> x;
add(i + 1, x);
}
for (int i = 0; i < M; ++i) {
int tip, x, y;
fin >> tip >> x >> y;
if (tip == 0) {
add(x, -y);
}
else {
fout << total(y) - total(x - 1) << "\n";
}
}
return 0;
}