Cod sursa(job #1807477)

Utilizator alexsandulescuSandulescu Alexandru alexsandulescu Data 16 noiembrie 2016 17:28:40
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#define ub(i) (i&(-i))

using namespace std;

ifstream f ("datorii.in");
ofstream g ("datorii.out");

int N, M, x, c, y, t, v, AIB[15003];
void add(int poz, int val) {
    for(int i = poz; i <= N; i += ub(i))
        AIB[i] += val;
}

int restante(int x, int y) {
    int SUMY = 0, SUMX  = 0;
    for(int i = y; i >= 1; i -= ub(i))
        SUMY += AIB[i];
    for(int i = x - 1; i >= 1; i -= ub(i))
        SUMX += AIB[i];
    return SUMY - SUMX;
}
int main()
{
    f >> N >> M;
    for(int i = 1; i <= N; i++) f >> x, add(i, x);
    for(int i = 1; i <= M; i++) {
        f >> c;
        if(c == 0) f >> t >> v, add(t, -v);
        else       f >> x >> y, g << restante(x, y) << "\n";
    }
    if(!M) g << "\n";
    return 0;
}