Cod sursa(job #1263294)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 14 noiembrie 2014 14:04:21
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#define MAXN 15000
using namespace std;

int aib[MAXN + 1];
int n;

void update(int val, int pos) {
    while (pos <= n) {
        aib[pos] += val;
        pos += (pos & (-pos));
    }
}

int query(int pos) {
    int res = 0;
    while (pos > 0) {
        res += aib[pos];
        pos -= (pos & (-pos));
    }

    return res;
}

int main () {
    ifstream in("datorii.in");
    ofstream out("datorii.out");

    int m;
    in >> n >> m;

    for (int i = 1 ; i <= n ; ++i) {
        int a;
        in >> a;
        update(a, i);
    }

    for (int i = 0 ; i < m ; ++i) {
        int tip;
        in >> tip;

        if (tip == 0) {
            int t, v;
            in >> t >> v;
            update(-v, t);
        }
        else {
            int p, q;
            in >> p >> q;
            out << query(q) - query(p - 1) << "\n";
        }
    }

    return 0;
}