Cod sursa(job #2112601)

Utilizator catalina200029Olteanu Catalina catalina200029 Data 23 ianuarie 2018 18:03:29
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>
#define inc(x) ((x^(x-1))&x)    ///2^k

using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");

int n,m,aib[15005];

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,x,y,p;
    f>>n>>m;
    for (i=1;i<=n;i++) {
        f>>x;
        adauga(x,i);
    }
    for (i=1;i<=m;i++) {
        f>>p>>x>>y;
        if (p==1)
            g<<suma(y)-suma(x-1)<<'\n';
        else adauga(-y,x);
    }
    return 0;
}