Pagini recente » Cod sursa (job #224284) | Cod sursa (job #502253) | Cod sursa (job #241701) | Cod sursa (job #475159) | Cod sursa (job #2758750)
#include <bits/stdc++.h>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
const int N=33002;
int n,m,a[N],p,c,x,y;
int suma(int nod, int st, int dr)
{
if(x<=st && dr<=y)
return a[nod];
if(x>dr || st>y)
return 0;
int mi=(st+dr)/2;
return suma(2*nod,st,mi)+suma(2*nod+1,mi+1,dr);
}
int main()
{
f>>n>>m;
p=1;
while(p<n)
p*=2;
for(int i=1;i<=n;i++)
f>>a[p-1+i];
for(int i=p-1;i>=1;i--)
a[i]=a[2*i]+a[2*i+1];
for(;m;m--)
{
f>>c>>x>>y;
if(c==1)
{
x=x+p-1;
a[x]-=y;
x/=2;
while(x>0)
{
a[x]=max(a[2*x],a[2*x+1]);
x/=2;
}
}
else
g<<suma(1,1,p)<<'\n';
}
return 0;
}