Cod sursa(job #2339911)

Utilizator andra_moldovanAndra Moldovan andra_moldovan Data 9 februarie 2019 15:30:50
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>

#define MAXN 15005

using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

int N, aib[MAXN];

inline void Update(int poz, int x) {
    for (int j = poz; j <= N; j += j & (-j))
        aib[j] += x;
}

inline int Query(int poz) {
    int sum = 0;
    for (int j = poz; j > 0; j -= j & (-j))
        sum += aib[j];
    return sum;
}

inline void Read() {
    int M, x, tip, a, b;

    fin >> N >> M;

    for (int i = 1; i <= N; i++) {
        fin >> x;

        Update(i, x);
    }

    while (M--) {
        fin >> tip >> a >> b;

        if (tip == 0) {
            Update(a, -b);
        }
        else {
            fout << Query(b) - Query(a - 1) << "\n";
        }
    }
}

int main () {
    Read();

    fin.close(); fout.close(); return 0;
}