Cod sursa(job #1846217)

Utilizator ASD135Radu M ASD135 Data 12 ianuarie 2017 13:15:44
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<cstdio>
 
FILE* in=fopen("datorii.in","r");
FILE* out=fopen("datorii.out","w");
 
int t,n;
const int Q=15007;
int v[Q];
 
void add(int wh, int val)
{
    while(wh<=t)
    {
        v[wh]+=val;
        wh+=wh&(-wh);
    }
}
int take(int wh)
{
    int rez=0;
    while(wh)
    {
        rez+=v[wh];
        wh-=wh&(-wh);
    }
    return rez;
}
 
 
int main()
{
    fscanf(in,"%d%d",&t,&n);
 
    int x;
 
    for(int i=1; i<=t; i++)
    {
        fscanf(in,"%d",&x);
        add(i,x);
    }
 
    int p,wh;
 
    for(int i=1; i<=n; i++)
    {
        fscanf(in,"%d%d%d",&p,&wh,&x);
        if(p==0)
            add(wh,-x);
        else
            fprintf(out,"%d\n",take(x)-take(wh-1));
    }
 
    return 0;
}