Cod sursa(job #3328656)

Utilizator Kat11Cristea Catrinel Kat11 Data 9 decembrie 2025 17:04:27
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <cmath>
using namespace std;

int main() {

    int n, m;
    cin >> n >> m;

    int l = (int)sqrt(n) + 1;
    int nrbl = (n + l - 1) / l;

    long long a[15001];
    long long pr[15001];
    long long batog[200];

    for (int i = 1; i <= n; i++) {
        cin >> a[i];
        pr[i] = a[i];
    }

    for (int i = 0; i < nrbl; i++)
        batog[i] = 0;

    for (int i = 1; i <= n; i++)
        batog[(i - 1) / l] += pr[i];

    while (m--) {
        int cod;
        cin >> cod;

        if (cod == 0) {
            int t, v;
            cin >> t >> v;

            pr[t] -= v;
            batog[(t - 1) / l] -= v;
        }
        else {
            int p, q;
            cin >> p >> q;

            long long rez = 0;

            int k = (p - 1) / l;


            for (int i = p; i <= min(q, k * l + l); i++)
                rez += pr[i];


            for (int b = k + 1; b < (q - 1) / l; b++)
                rez += batog[b];

            int start = ((q - 1) / l) * l + 1;
            for (int i = start; i <= q; i++)
                rez += pr[i];

            cout << rez << "\n";
        }
    }

    return 0;
}