Cod sursa(job #3272055)

Utilizator mihaihvhTuburlui Mihai mihaihvh Data 28 ianuarie 2025 11:03:06
Problema Arbori indexati binar Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream cin("aib.in");
ofstream cout("aib.out");

#define ll long long

ll n, m, opr;

vector<ll> g;
vector<ll> sum;

int main() {
    cin.tie(0);
    cin.sync_with_stdio(false);
    cin >> n >> m;
    g.resize(n + 1);
    sum.resize(n + 1);

    for (int i = 1; i <= n; ++i)
        cin >> g[i];

    for (int i = 1; i <= n; ++i)
        sum[i] = sum[i - 1] + g[i];

    for (int i = 1; i <= m; ++i) {
        cin >> opr;
        if (opr == 0) {
            int a, b;
            cin >> a >> b;
            g[a] += b;
            for (int j = a; j <= n; ++j)
                sum[j] += b;
        }
        else if (opr == 1) {
            int a, b;
            cin >> a >> b;
            cout << sum[b] - sum[a-1] << '\n';
        }
        else if (opr == 2) {
            int a, k;
            cin >> a;
            for (int j = 1; j <= n; ++j) {
                if (sum[j] >= a) {
                    k = j;
                    break;
                }
            }
            if (sum[k] != a) cout << -1 << '\n';
            else cout << k << '\n';
        }
    }

    return 0;
}