Cod sursa(job #3266105)

Utilizator schema_227Stefan Nicola schema_227 Data 5 ianuarie 2025 18:47:14
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("datorii.in");
ofstream out("datorii.out");

struct DS
{
    int n;
    vector<long long> arr;
    DS(int n): n(n), arr(n+1, 0) {}
    void upd(int i, long long v)
    {
        for(; i <= n; i += i & -i) arr[i] += v;
    }
    long long qry(int i)
    {
        long long s = 0;
        for(; i > 0; i -= i & -i) s += arr[i];
        return s;
    }
    long long rng(int l, int r)
    {
        return qry(r) - qry(l-1);
    }
};

int main()
{
    int N, M;
    in >> N >> M;
    DS d(N);
    for(int i = 1; i <= N; i++)
    {
        long long v;
        in >> v;
        d.upd(i, v);
    }
    while(M--)
    {
        int c;
        in >> c;
        if(c == 0)
        {
            int t;
            long long v;
            in >> t >> v;
            d.upd(t, -v);
        }
        else
        {
            int p, q;
            in >> p >> q;
            out << d.rng(p, q) << "\n";
        }
    }
    return 0;
}