Pagini recente » Cod sursa (job #960282) | Cod sursa (job #2775443) | Cod sursa (job #874625) | Cod sursa (job #68154) | Cod sursa (job #653121)
Cod sursa(job #653121)
#include<iostream>
#include<fstream>
using namespace std;
long v[100001],poz,x,a,b,c;
long s;
void update(int nod, int st, int dr)
{
int mij;
if(st==dr) {
v[nod]=v[nod]+x*c;
return;
}
else {
mij=(st+dr)/2;
if(poz<=mij)
update(nod*2,st,mij);
else update(nod*2+1,mij+1,dr);
}
v[nod]=v[nod*2]+v[nod*2+1];
}
void interogare(int nod, int st, int dr)
{
int mij;
if((a<=st)&&(dr<=b)) {
s=s+v[nod];
return;
}
mij=(st+dr)/2;
if(a<=mij)
interogare(nod*2,st,mij);
if(mij<b)
interogare(nod*2+1,mij+1,dr);
}
int main ()
{
int n,i,m,p;
ifstream f("datorii.in");
ofstream g("datorii.out");
f>>n>>m;
c=1;
for(i=1;i<=n;i++) {
f>>x;
poz=i;
update(1,1,n);
}
c=-1;
for(i=1;i<=m;i++) {
f>>p>>poz>>x;
if(p==0)
update(1,1,n);
else {
a=poz;
b=x;
interogare(1,1,n);
g<<s<<'\n';
s=0;
}
}
f.close();
g.close();
return 0;
}