Cod sursa(job #2766212)

Utilizator BalasaRaduBalasa Radu BalasaRadu Data 31 iulie 2021 13:06:14
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>
#define int long long
using namespace std;

ifstream fin ("datorii.in");
ofstream fout("datorii.out");

const int dim=15009;

int n,m,a[dim];
int aib[dim];

int lsb(int x){
    return x&(-x);
}

void Update(int pos,int val){
    for(int i=pos;i<=n;i+=lsb(i)){
        aib[i]+=val;
    }
}

int Query(int pos){
    int sum=0;
    for(int i=pos;i>=1;i-=lsb(i)){
        sum+=aib[i];
    }
    return sum;
}

int suma(int st,int dr){
    return Query(dr)-Query(st-1);
}

signed main(){

        fin>>n>>m;
    for(int i=1;i<=n;i++){
        fin>>a[i];
        Update(i,a[i]);
    }
    for(int i=1;i<=n;i++){
        int c;
        fin>>c;
        if(c==0){
            int pos,val;
            fin>>pos>>val;
            Update(pos,-val);
        }
        if(c==1){
            int st,dr;
            fin>>st>>dr;
            fout<<suma(st,dr)<<'\n';
        }
    }
}