Pagini recente » Cod sursa (job #902449) | Cod sursa (job #2127884) | Cod sursa (job #738252) | Cod sursa (job #2931785) | Cod sursa (job #719432)
Cod sursa(job #719432)
#include <fstream>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int poz,val,start,finish,suma;
int dat[70000];
void act(int nod,int st,int dr){if(st==dr)dat[nod]=val;
else {int m;
m=(st+dr)/2;
if(poz<=m)act(2*nod,st,m);
else act(2*nod+1,m+1,dr);
dat[nod]=dat[nod*2]+dat[nod*2+1];
}
}
void inter(int nod,int st,int dr){if(start<=st&&dr<=finish)suma+=dat[nod];
else {int m;m=(st+dr)/2;
if(start<=m)inter(2*nod,st,m);
if(finish>m)inter(2*nod+1,m+1,dr);
}
}
int main()
{int n,m,x,a,b,i;
fin>>n>>m;
for(i=1;i<=n;i++)
{fin>>val;
poz=i;
act(1,1,n);
}
for(i=1;i<=m;i++)
{fin>>x;fin>>a;fin>>b;
if(x==0){poz=a;val=b;
act(1,1,n);
}
else{suma=0;
start=a;finish=b;
inter(1,1,n);
fout<<suma<<"\n";}
}
return 0;
}