Cod sursa(job #1610520)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 23 februarie 2016 16:48:55
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>

#define zero(x) (x&(-x))
#define NMax 15005
using namespace std;

int AIB[NMax];
int n,m,x,y,p;
void add(int poz,int x){
    for(int i = poz; i <= n; i += zero(i))
        AIB[i] += x;
}
int sumpoz(int poz){
    int sum = 0;
    for(int i = poz; i >= 1; i -= zero(i)){
        sum += AIB[i];
    }
    return sum;
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i = 1; i <= n; ++i){
        scanf("%d",&x);
        add(i,x);
    }
    for(int i = 1; i <= m; ++i){
        scanf("%d%d%d",&p,&x,&y);
        if(p == 0)
            add(x,-y);
        else{
            printf("%d\n",sumpoz(y) - sumpoz(x - 1));
        }
    }
    return 0;
}