Cod sursa(job #560791)

Utilizator paul992Cirstean Paul paul992 Data 18 martie 2011 18:04:18
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
#define nrn 15001
#define zzz(x) ((x^(x-1))&x)
using namespace std;

int AIB[nrn],n,m;

void upup(int i,int val)
{
    for(i;i<=n;i+=zzz(i))
        AIB[i]+=val;
}
int suma(int ind)
{
    int i,sum=0;
    for(i=ind;i>0;i-=zzz(i))
        sum+=AIB[i];
    return sum;
}
void unu()
{
    int a,b;
    scanf("%d %d",&a,&b);
    upup(a,-b);
}
void doi()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d\n",suma(b)-suma(a-1));
}

int main()
{freopen("datorii.in","r",stdin);
freopen("datorii.out","w",stdout);
    int i,x,c;
    scanf("%d %d",&n,&m);
    for(i=1;i<=n;++i)
    {
        scanf("%d",&x);
        upup(i,x);
    }
    for(i=1;i<=m;i++)
    {
        scanf("%d",&c);
        switch(c)
        {
            case(0):unu();break;
            case(1):doi();break;
           
        }
    }
    return 0;
}