Cod sursa(job #3133647)

Utilizator vatau.lorenaVatau Lorena vatau.lorena Data 26 mai 2023 14:57:17
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

void modify(vector<int>& c, int index, int value) {
    while (index < c.size()) {
        c[index] += value;
        index += index & -index;
    }
}

int getSum(const vector<int>& c, int index) {
    int sum = 0;
    while (index > 0) {
        sum += c[index];
        index -= index & -index;
    }
    return sum;
}

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

    int n, m;
    inputFile >> n;
    inputFile >> m;

    vector<int> c(n + 1);
    for (int i = 1; i <= n; i++) {
        int a;
        inputFile >> a;
        modify(c, i, a);
    }

    for (int i = 1; i <= m; i++) {
        int d, a, b;
        inputFile >> d >> a >> b;
        if (d == 0) {
            modify(c, a, -b);
        } else {
            int result = getSum(c, b) - getSum(c, a - 1);
            outputFile << result << "\n";
        }
    }

    inputFile.close();
    outputFile.close();

    return 0;
}