Pagini recente » Cod sursa (job #2154894) | Cod sursa (job #1270908) | Cod sursa (job #927014) | Cod sursa (job #2789691) | Cod sursa (job #653120)
Cod sursa(job #653120)
#include<iostream>
#include<fstream>
using namespace std;
int v[30001],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;
}