Cod sursa(job #552155)

Utilizator nickyyLal Daniel Emanuel nickyy Data 11 martie 2011 18:58:51
Problema Datorii Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#define maxn 15005
int datorie[maxn];
int n;

void modifica(int , int);
int suma(int);

int main(void)
{   int i,k,x,y,m;

    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        scanf("%d",&x), modifica(i,-x);
    for(; m; m--)
    {   scanf("%d%d%d",&k,&x,&y);
        if(k==0) modifica(x,y);
        else printf("%d\n",suma(y)-suma(x-1));
    }
    return 0;
}

void modifica(int poz,int val)
{
    for(; poz<=n; poz+=((poz^(poz-1))&poz) )
        datorie[poz]-=val;
}

int suma(int poz)
{
    int s=0;
    for(; poz>0; poz-=((poz^(poz-1))&poz) )
        s+=datorie[poz];
    return s;
}