Cod sursa(job #2271797)

Utilizator Bulboaca_EugenBulboaca Alexandru Eugen Bulboaca_Eugen Data 29 octombrie 2018 11:23:37
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>
using namespace std;
#define MAXN 15000
ifstream fin("datorii.in");
ofstream fout("datorii.out");

int aib[MAXN + 20];

int zeros(int x){
    return x & (-x);
}
void update(int n , int day, int value){
    for(int i = day; i <= n; i += zeros(i))
        aib[i] += value;
}
int query(int position){
    int s = 0;
    for(int i = position; i > 0; i -= zeros(i))
        s += aib[i];
    return s;
}
int main(){
    int n, m, x;
    bool type;
    fin >> n >> m;
    for(int i = 1; i <= n; ++i){
        fin >> x;
        update(n ,i, x);
    }
    for(int i = 1; i <= m; ++i){
        fin >> type;
        if(!type){
            int value, day;
            fin >> day >> value;
            update(n, day, -value);
        }
        else{
            int left, right;
            fin >> left >> right;
            fout << query(right) - query(left - 1) << '\n';
        }
    }
    return 0;
}