Pagini recente » Cod sursa (job #1453201) | Cod sursa (job #2103554) | Cod sursa (job #2974628) | Cod sursa (job #1777094) | Cod sursa (job #2245579)
#include<bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,x;
int pos,arb[55005];
int start,finish;
void Up(int node,int st,int dr)
{
if(st==dr)
{
if(arb[node]==0)
arb[node]=x;
else
arb[node]-=x;
return;
}
int mij=(dr-st)/2+st;
if(pos<=mij)
Up(node*2,st,mij);
else
Up(node*2+1,mij+1,dr);
arb[node]=arb[node*2]+arb[node*2+1];
}
int Qu(int node,int st,int dr)
{
if(start<=st && dr<=finish)
return arb[node];
int mij=(dr-st)/2+st;
if(dr<start || st>finish)
return 0;
return Qu(node*2,st,mij)+Qu(node*2+1,mij+1,dr);
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;++i)
{
f>>x;
pos=i;
Up(1,1,n);
}
for(int i=1;i<=m;++i)
{
int op;
f>>op;
if(!op)
{
f>>pos>>x;
Up(1,1,n);
}
else
{
f>>start>>finish;
g<<Qu(1,1,n)<<'\n';
}
}
}