Cod sursa(job #1013028)

Utilizator mirceadinoMircea Popoveniuc mirceadino 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;
}