Pagini recente » Cod sursa (job #1823919) | Cod sursa (job #1489962) | Cod sursa (job #1666358) | Cod sursa (job #1866941) | Cod sursa (job #472788)
Cod sursa(job #472788)
#include<fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int N,M,i,x,zi,op,a,b,sum;
int arb[30001];
void update(int nod, int left,int right,int val)
{ if(left==right)
{ arb[nod]+=x*val;
return;
}
else
{ int mid=(left+right)>>1;
if(zi<=mid)
update(2*nod,left,mid,val);
else
update(2*nod+1,mid+1,right,val);
}
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
void query(int nod, int left, int right)
{ if(a<=left && right<=b)
{ sum+=arb[nod];
return;
}
else
{ int mid=(left+right)>>1;
if(a<=mid)
query(2*nod,left,mid);
if(mid<b)
query(2*nod+1,mid+1,right);
}
}
int main()
{ f>>N>>M;
for(i=1;i<=N;i++)
{ f>>x;
zi=i;
update(1,1,N,1);
}
for(i=1;i<=N;i++)
{ f>>op>>a>>b;
if(!op)
{ zi=a;
x=b;
update(1,1,N,-1);
}
else
{ sum=0;
query(1,1,N);
g<<sum<<'\n';
}
}
f.close();
g.close();
return 0;
}