Pagini recente » Cod sursa (job #2001227) | Cod sursa (job #2229542) | Cod sursa (job #1613457) | Cod sursa (job #2451861) | Cod sursa (job #1439473)
#include <cstdio>
#include <fstream>
#include<cstring>
using namespace std;
FILE *f=fopen("datorii.in", "r");
FILE *g=fopen("datorii.out", "w");
int v[100001], c, n, m, s, t;
inline int Minim(int a, int b) {
if (a< b)
return a;
return b;
}
void add(int poz, int val){
c=0;
while(poz<=n){
v[poz]+=val;
while(!(poz&(1<<c)))
++c;
poz+=(1<<c);
c+=1;
}
}
int Q(int poz){
c=0, s=0;
while(poz>0){
s+=v[poz];
while(!(poz&(1<<c)))
++c;
poz-=(1<<c);
c+=1;
}
return s;
}
int main()
{
int k, x, y;
fscanf(f, "%d%d", &n, &m);
for(int i=1; i<=n; ++i){
fscanf(f, "%d", &t);
add(i,t);
}
for(int i=1; i<=m; ++i){
fscanf(f, "%d%d%d", &k, &x, &y);
if(k==0)
add(x,-y);
else
fprintf(g, "%d\n", Q(y)-Q(x-1));
}
return 0;
}