Cod sursa(job #3357713)

Utilizator TeocipTudorica Ciprian Teodor Teocip Data 13 iunie 2026 11:57:03
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
using namespace std;

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

const int maxN = 15000;
int aib[maxN];

void actualizare(int n, int poz, int val){
    while(poz <= n){
        aib[poz] += val;
        int p2 = (poz & (-poz));
        poz += p2;
    }
}

int interogare(int n, int poz){
    int s = 0;
    while(poz > 0){
        s += aib[poz];
        int p2 = poz & (-poz);
        poz -= p2;
    }
    return s;
}

int main(){
    int n, m;
    cin >> n >> m;
    for(int i = 1; i <= n; i++){
        int xi;
        cin >> xi;
        actualizare(n, i, xi);
    }
    for(int i = 0; i < m; i++){
        int tip;
        cin >> tip;
        if(!tip){
            int t, v;
            cin >> t >> v;
            actualizare(n, t, -v);
        }else{
            int p, q;
            cin >> p >> q;
            cout << interogare(n, q) - interogare(n, p - 1) << " ";
        }
    }
    return 0;
}