Cod sursa(job #2928475)

Utilizator Vlad_NistorNIstor Vlad Vlad_Nistor Data 22 octombrie 2022 23:26:34
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;

int aib[100001],n;

int query(int p){
    int suma = 0;
    for(int i = p;i>=1;i-=(i&-i)){
        suma += aib[i];
    }
    return suma;
}

void update1(int p, int x){
    for(int i = p;i<=n;i+=(i&-i)){
        aib[i] -=x;
    }
}

void update(int p, int x){
    for(int i = p;i<=n;i+=(i&-i)){
        aib[i] +=x;
    }
}
int main(void){
    ofstream cout("datorii.out");
    ifstream cin("datorii.in");
    int m,x;
    cin >> n >> m;
    cin.ignore();
    for(int i = 1;i<=n;i++){
        cin >> x;
        update(i,x);
    }
    for(int i = 1;i<=m;i++){
        int c;
        cin >> c;
        if(c == 0){
            int p;
            cin >> p >> x;
            update1(p,x);
        }else if(c == 1){
            int p1,p2;
            cin >> p1 >> p2;
            cout << query(p2) - query(p1-1) << '\n';
        }

    }
}