Cod sursa(job #1097965)

Utilizator delta_wolfAndrei Stoica delta_wolf Data 4 februarie 2014 11:53:47
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
using namespace std;
int x,y,z,i,n,m,copac[15010];
void update(int v,int pz)
{
    int i;
    for(i=pz;i<=n;i+=(i&(-i)))
        copac[i]=copac[i]+v;
}
int suma(int pz)
{
    int i,s=0;
    for(i=pz;i>=1;i-=(i&(-i)))
    s+=copac[i];
    return s;
}
int query(int P1,int P2)
{
    return(suma(P2)-suma(P1-1));
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&x);
        update(x,i);
    }
    while(m>0)
    {
        m--;
        scanf("%d",&x);
        if(x==0)
        {
            scanf("%d%d",&y,&z);
            update(y,z);
        }
        else
        {
            scanf("%d%d",&y,&z);
            printf("%d\n",query(y,z));
        }

    }
    return 0;
}