Cod sursa(job #2579034)

Utilizator Dragos1226Dragos Chileban Dragos1226 Data 11 martie 2020 21:04:09
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<fstream>
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
const int NMax = 15000;
int N, M, A[NMax+5], Aib[NMax+5];

void Update(int Pos, int Val) {
    for (int i = Pos; i <= N; i+=(i&(-i)))
        Aib[i] += Val;
}

int Query(int Pos1, int Pos2) {
    int Sum1 = 0, Sum2 = 0;
    for (int i = Pos1; i > 0; i-=(i&(-i)))
        Sum1 += Aib[i];

    for (int i = Pos2; i > 0; i-=(i&(-i)))
        Sum2 += Aib[i];

    return Sum2 - Sum1;
}

int main() {
    in >> N >> M;
    for (int i = 1, x; i <= N; i++) {
        in >> x;
        Update(i,x);
    }
    while (M--) {
        int t, x, y;
        in >> t >> x >> y;
        if (t == 0)
            Update(x,-y);
        else
            out << Query(x-1,y) << '\n';
    }
}