Cod sursa(job #2290219)
| Utilizator | Data | 25 noiembrie 2018 23:52:02 | |
|---|---|---|---|
| Problema | Datorii | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <bits/stdc++.h>
using namespace std;
int a[10000],t[10000],n;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int query(int k){
int ret=0;
for(int i=k;i>0;i-=(i&-i)){ret+=t[i];
}
return ret;
}
void update(int k, int x){
for(int i=k;i<=n;i+=(i&-i))
t[i]+=x;
}
int main(){
int q; fin>>n>>q;
for(int i=1;i<=n;i++){
fin>>a[i];
update(i, a[i]);
}
for(int i=1;i<=q;i++){
int type,x,y;
fin>>type>>x>>y;
if(type==0){update(x,-y);
a[x]-=y;
} else { fout<<query(y)-query(x-1)<<'\n';
}
}
}
