Cod sursa(job #3205863)

Utilizator antonio_sefu_tauLaslau Antonio antonio_sefu_tau Data 20 februarie 2024 18:55:19
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>
using namespace std;
const int dim=15005;
int n,m,aib[dim];
int lsb(int x){
    return x&(-x);
}
void Update(int poz, int val){
    for(int i=poz;i<=n;i+=lsb(i)){
        aib[i]+=val;
    }
}
int Query(int poz){
    int s=0;
    for(int i=poz;i>=1;i-=lsb(i)){
        s+=aib[i];
    }
    return s;
}
int main(){
    ifstream f("datorii.in");
    ofstream g("datorii.out");
    f>>n>>m;
    for(int i=1;i<=n;i++){
        int x;
        f>>x;
        Update(i,x);
    }
    while(m--){
        int t,x,y;
        f>>t>>x>>y;
        if(t==0){
            Update(x,-y);
        }
        else{
            g<<Query(y)-Query(x-1)<<'\n';
        }
    }
    return 0;
}