Cod sursa(job #3244948)

Utilizator antonio_sefu_tauLaslau Antonio antonio_sefu_tau Data 26 septembrie 2024 21:13:07
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <bits/stdc++.h>
#define int long long
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 suma(int x){
    int s=0;
    for(int i=x;i>=1;i-=lsb(i)){
        s+=aib[i];
    }
    return s;
}
signed 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<<suma(y)-suma(x-1)<<'\n';
        }
    }
    return 0;
}