Cod sursa(job #3246939)

Utilizator vladneaguvladCristianoRonaldo vladneagu Data 4 octombrie 2024 20:31:00
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <vector>
using namespace std;
vector <int> bit;
int n,q;
void update1(int i,int x){
    while(i<=n){
        bit[i]+=x;
        i=i+(i&-i);
    }
}
void update2(int i,int x){
    while(i<=n){
        bit[i]-=x;
        i=i+(i&-i);
    }
}
int sumx(int poz){
    int sum=0;
    while(poz>0){
        sum=sum+bit[poz];
        poz=poz-(poz&-poz);
    }
    return sum;
}
int ranges(int lr,int rl){
    return sumx(rl)-sumx(lr-1);
}
int main()
{
    ifstream cin("datorii.in");
    ofstream cout("datorii.out");
    cin>>n>>q;
    bit.assign(n+1,0);
    for (int i =1; i <=n; i++) {
        int val;
        cin>>val;
        update1(i,val);
    }
    for (int i = 1; i <=q; i++) {
        int c,a,b;
        cin>>c>>a>>b;
        if(c==0){
            update2(a,b);
        }else{
            cout<<ranges(a,b)<<endl;
        }
    }
    return 0;
}