Pagini recente » Cod sursa (job #2286174) | Cod sursa (job #3135742) | Cod sursa (job #2717719) | Ciorna | Cod sursa (job #195374)
Cod sursa(job #195374)
#include<fstream>
using namespace std;
int aib[15001], n;
//clientul din ziua poz achita suma val
void update(int poz, int val){
while(poz<=n){
aib[poz] -= val;
poz+=(poz&(~(poz-1)));
}
}
//intoarce datoria intre zilele p si q
int query(int p, int q){
if(p>1){
return (query(1,q)-query(1,p-1));
}
else{
int s=0;
while(q>0){
s+=aib[q];
q-=(q&(~(q-1)));
}
return s;
}
}
int main(){
int m, i, x,v,t;
ifstream f("datorii.in");
f>>n>>m;
for(i=1;i<=n;i++){
f>>x;
update(i,-x);//se aduna la aib[i] pe x <=> se scade din aib[i] pe -x
}
ofstream g("datorii.out");
for(i=0;i<m;i++){
f>>x>>v>>t;
if(x==0)
update(v,t);
else if(x==1)
g<<query(v,t)<<'\n';
}
g.close();
return 0;
}