Cod sursa(job #2074095)

Utilizator CammieCamelia Lazar Cammie Data 24 noiembrie 2017 08:38:41
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>

#define MAXN 15005

using namespace std;

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

int sum[MAXN], s, n, m;

inline void Update(int poz, int val) {
    for (; poz <= n; poz += (poz & (-poz))) {
        sum[poz] += val;
    }
}

inline int Query(int a, int b) {
    int s = 0;

    for (int i = a - 1; i; i -= (i & (-i))) {
        s -= sum[i];
    }

    for (int i = b; i; i -= (i & (-i))) {
        s += sum[i];
    }

    return s;
}

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

    fin >> n >> m;

    for (int i = 1; i <= n; i++) {
        fin >> a;

        Update(i, a);
    }

    for (int i = 1; i <= m; i++) {
        fin >> tip;

        if (tip == 0) {
            fin >> a >> b;

            Update(a, -b);
        }
        else {
            fin >> a >> b;

            fout << Query(a, b) << "\n";
        }
    }
}

int main () {
    Read();

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