Cod sursa(job #1962135)

Utilizator mateibanuBanu Matei Costin mateibanu Data 11 aprilie 2017 16:32:09
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>

using namespace std;

FILE*f=fopen("datorii.in","r");
FILE*g=fopen("datorii.out","w");

int n,arb[15010];

void adaug(int p, int x){
    int b;
    while (p<=n){
        arb[p]+=x;
        b=p&((p-1)^p);
        p+=b;
    }
}

int suma(int p){
    int b,s=0;
    while (p>0){
        s+=arb[p];
        b=p&((p-1)^p);
        p-=b;
    }
    return s;
}

int main()
{
    int m,p,x,y,i;
    fscanf(f,"%d%d",&n,&m);
    for (i=1;i<=n;i++){
        fscanf(f,"%d",&x);
        adaug(i,x);
    }
    for (i=1;i<=m;i++){
        fscanf(f,"%d%d%d",&p,&x,&y);
        if (p==0){
            adaug(x,-y);
        }
        else{
            fprintf(g,"%d\n",suma(y)-suma(x-1));
        }
    }
    fclose(f);
    fclose(g);
    return 0;
}