Cod sursa(job #1851126)

Utilizator andysoloAndrei Solo andysolo Data 19 ianuarie 2017 12:56:07
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#define lb(x) x&(-x)
#define NMAX 15000
#include <cmath>
#include <algorithm>

using namespace std;

int N,AiB[NMAX+5],M;

int getAiB(int p)
{
    int s=0;
    for(int i=p;i>=1;i-=lb(i))
        s+=AiB[i];
    return s;
}

void addAiB(int p,int k)
{
    for(int i=p;i<=N;i+=lb(i))
        AiB[i]+=k;
}
int main() {
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);

    scanf("%d %d",&N,&M);

    for(int i=1; i<=N; i++) {
            int x;
        scanf("%d",&x);
        addAiB(i,x);
    }
    for(int i=1; i<=M; i++) {
        int a,b,c;
        scanf("%d %d %d",&a,&b,&c);
        if(a==0)
            addAiB(b,-c);
        else {
            int s=getAiB(c)-getAiB(b-1);
            printf("%d \n",s);
        }
    }

    return 0;
}