Cod sursa(job #2410462)

Utilizator catalina200029Olteanu Catalina catalina200029 Data 20 aprilie 2019 08:48:24
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <bits/stdc++.h>
#define NMAX 15005
#define inc(x) ((x^(x-1))&x)

using namespace std;

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

int n,m,aib[NMAX];

void adauga(int val,int k) {
    int i;
    for (i=k;i<=n;i+=inc(i)) aib[i]+=val;
}

int suma(int k) {
    int i,s=0;
    for (i=k;i>=1;i-=inc(i)) s+=aib[i];
    return s;
}

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