Pagini recente » Cod sursa (job #210228) | Cod sursa (job #2177173) | Cod sursa (job #3203486) | Cod sursa (job #2882037) | Cod sursa (job #911199)
Cod sursa(job #911199)
#include <stdio.h>
#define zeros(x) ( (x ^ (x - 1)) & x )
using namespace std;
int AIB[200], N, M;
void Add(int x, int quantity) {
int i;
for (i = x; i <= N; i += zeros(i))
AIB[i] += quantity;
}
int Compute(int x){
int i, ret = 0;
for (i = x; i > 0; i -= zeros(i))
ret += AIB[i];
return ret;
}
int main() {
freopen ("aib.in", "r", stdin);
freopen ("aib.out", "w", stdout);
int i, opt, a, b, x;
scanf ("%d %d", &N, &M);
for (i = 1; i <= N; ++i) {
scanf ("%d", &x);
Add(i, x);
}
for (i = 1; i <= M; ++i) {
scanf ("%d", &opt);
if (opt == 0) {
scanf ("%d %d", &a, &b);
Add (a, b);
}
if (opt == 1) {
scanf ("%d %d", &a, &b);
printf ("%d\n", Compute(b) - Compute(a-1));
}
if (opt == 2) {
scanf ("%d", &a);
b = 1;
while (Compute(b) != a) ++b;
printf ("%d\n", b);
}
}
return 0;
}