Cod sursa(job #3134269)

Utilizator adelibdAdel Ib adelibd Data 28 mai 2023 20:28:12
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>

//std::ifstream fin("C:\\Users\\DelMX\\OneDrive\\Sharing\\tema-sd-3\\datorii.in");
//std::ofstream fout("C:\\Users\\DelMX\\OneDrive\\Sharing\\tema-sd-3\\datorii.out");
std::ifstream fin("datorii.in");
std::ofstream fout("datorii.out");
int n, m, x;
int v[150000];
int main() {

    fin >> n >> m;
    for (int i = 0; i < n; i++) {
        fin >> x;
        int p = i + 1;
        while (p <= n) {
            v[p] += x;
            p = p + (p&(-p));
        }
    }
    for (int i = 0; i < m; i++) {
        int a, b;
        fin >> x >> a >> b;
        if (x == 0) {
            while (a <= n) {
                v[a] -= b;
                a = a + (a&(-a));
            }
        }
        else {
            int s1 = 0, s2 = 0;
            while (b > 0) {
                s1 += v[b];
                b = b - (b&(-b));
            }
            a--;
            while (a > 0) {
                s2 += v[a];
                a = a - (a&(-a));
            }
//            std::cout << s1 - s2 << "\n";
            fout << (s1 - s2) << "\n";
        }
    }

    return 0;
}