Pagini recente » Cod sursa (job #901737) | Cod sursa (job #695778) | Cod sursa (job #694739) | Cod sursa (job #749368) | Cod sursa (job #3352591)
/*
* author [dubit]
*/
#include <bits/stdc++.h>
using namespace std;
int N,M;
struct Fenwick{
int n,tree[15005];
Fenwick(int sz)
{
n=sz;
for(int i=0;i<=n;i++)
tree[i]=0;
}
void add(int idx,int val)
{
for(;idx<=n;idx+=idx&-idx)
tree[idx]+=val;
}
void A(int idx,int val)
{
for(;idx<=n;idx+=idx&-idx)
tree[idx]=max(0,tree[idx]-val);
}
int B(int idx)
{
int sum=0;
for(;idx>0;idx-=idx&-idx)
sum+=tree[idx];
return sum;
}
};
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
cin>>N>>M;
Fenwick v(N);
for(int i=1;i<=N;i++)
{
int x;
cin>>x;
v.add(i,x);
}
while(M--)
{
int tip,a,b;
cin>>tip>>a>>b;
if(tip==0)
v.A(a,b);
else
cout<<v.B(b)-v.B(a-1)<<'\n';
}
return 0;
}