Pagini recente » Cod sursa (job #2108171) | Cod sursa (job #2457143) | Cod sursa (job #1611652) | Cod sursa (job #742652) | Cod sursa (job #1210820)
#include<fstream>
#include<algorithm>
using namespace std;
int arb[60005],n,m,i,x,y,rs;
bool op;
void update(int left,int right,int nod) {
if(left==right) arb[nod]-=y;
else {
int pivot=(left+right)/2;
if(x<=pivot) update(left,pivot,2*nod);
else update(pivot+1,right,2*nod+1);
arb[nod]=arb[2*nod]+arb[2*nod+1];
}
}
void query(int left,int right,int nod) {
if(left>=x && right<=y) rs+=arb[nod];
else {
int pivot=(left+right)/2;
if(x<=pivot) query(left,pivot,2*nod);
if(y>pivot) query(pivot+1,right,2*nod+1);
}
}
int main()
{
ifstream cin("datorii.in");
ofstream cout("datorii.out");
cin>>n>>m;
for(i=1;i<=n;++i) cin>>y,y*=-1,x=i,update(1,n,1);
while(m--)
{
cin>>op>>x>>y;
if(!op) update(1,n,1);
else rs=0,query(1,n,1),cout<<rs<<'\n';
}
return 0;
}