Cod sursa(job #2152719)

Utilizator iandavidroIan David Bocioaca iandavidro Data 5 martie 2018 19:12:02
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
 
#define MAXN 20005
 
using namespace std;
 
ifstream fin("datorii.in");
ofstream fout("datorii.out");
 
int aib[MAXN * 4], N;
 
inline void Update(int poz, int val) {
    for (int i = poz; i <= N; i += i & (-i)) {
        aib[i] += val;
    }
}
 
inline int Query(int a, int b) {
    int s = 0;
    for (int i = b; i; i -= i & (-i)) {
        s += aib[i];
    }
    for (int i = a - 1; i; i -= i & (-i)) {
        s -= aib[i];
    }
    return s;
}
 
inline void Read() {
    int M, tip, x, y;
 
    fin >> N >> M;
 
    for (int i = 1; i <= N; i++) {
        fin >> x;
        Update(i, x);
    }
 
    while (M--) {
        fin >> tip >> x >> y;
 
        if (tip == 0) {
            Update(x, -y);
        }
        else {
            fout << Query(x, y) << "\n";
        }
    }
}
 
int main () {
    Read();
 
    fin.close(); fout.close(); return 0;
}