Cod sursa(job #1042989)

Utilizator Emanuel9Dumitru Emanuel Cristian Emanuel9 Data 27 noiembrie 2013 21:15:43
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

int a[15001],n,m;
int s(int);
void achita(int,int);
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);

    int q,x,y;
    scanf("%d%d",&n,&m);
    int i;
    for(i=1;i<=n;i++){
        scanf("%d",&x);
        achita(i,x);
    }

    while(m){
        scanf("%d%d%d",&q,&x,&y);
        if(q==0) achita(x,-y);
        else
            printf("%d\n",s(y)-s(x-1));
        m--;
    }

    return 0;
}
int s(int x){
    int s=0;
    while(x){
        s=s+a[x];
        x-= x & -x;
    }
    return s;
}
void achita(int x,int val){
    while(x<=n){
        a[x]+=val;
        x+= x & -x;
    }
}