Cod sursa(job #1013028)
Utilizator | Data | 20 octombrie 2013 08:49:45 | |
---|---|---|---|
Problema | Datorii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.62 kb |
#include<cstdio>
#define NMAX 15000+5
using namespace std;
int AIB[NMAX],N,M;
void add(int x,int p)
{
int i;
for(i=p;i<=N;i+=i&(-i)) AIB[i]+=x;
}
int query(int p)
{
int i,s=0;
for(i=p;i;i-=i&(-i)) s+=AIB[i];
return s;
}
int main()
{
int i,a,b,t;
freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
scanf("%d%d",&N,&M);
for(i=1;i<=N;i++)
{
scanf("%d",&a);
add(a,i);
}
for(;M;--M)
{
scanf("%d%d%d",&t,&a,&b);
if(t==0) add(-b,a);
else printf("%d\n",query(b)-query(a-1));
}
return 0;
}