Pagini recente » Cod sursa (job #633723) | Cod sursa (job #1705166) | Cod sursa (job #2594713) | Cod sursa (job #256205) | Cod sursa (job #1280488)
#include <fstream>
#define dim 15002
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int v[4*dim],n,m,cif,x,poz,sum,i;
void parc(int nod,int p,int u){
if(p==u){
fin>>v[nod];
return;
}
int m=(p+u)/2;
parc(2*nod,p,m);
parc(2*nod+1,m+1,u);
v[nod]=v[2*nod]+v[2*nod+1];
}
void update(int nod,int p, int u){
if(p==u){
v[nod]-=x;
return;
}
int m=(p+u)/2;
if(poz<=m)
update(2*nod,p,m);
if(poz>m)
update(2*nod+1,m+1,u);
v[nod]=v[2*nod]+v[2*nod+1];
}
void query(int nod,int p,int u){
if(p>=x && u<=poz){
sum+=v[nod];
return;
}
int m=(p+u)/2;
if(m>=x)
query(2*nod,p,m);
if(m<poz)
query(2*nod+1,m+1,u);
}
int main(){
fin>>n>>m;
parc(1,1,n);
for(i=1;i<=m;i++){
fin>>cif>>poz>>x;
if(cif==0)
update(1,1,n);
else{
sum=x;
x=poz;
poz=sum;
sum=0;
query(1,1,n);
fout<<sum<<'\n';
}
}
fin.close();fout.close();
return 0;
}