Cod sursa(job #2959247)

Utilizator DariusM17Murgoci Darius DariusM17 Data 30 decembrie 2022 12:39:27
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>
using namespace std ;
ifstream fin("datorii.in") ;
ofstream fout("datorii.out") ;
#define zeros(x) ((x^(x-1))&x)
const int NM=15001 ;
int n,m,aib[NM],x,y,op ;
void add(int pos,int x)
{
    for(int i=pos; i<=n; i+=zeros(i)) aib[i]+=x ;
}
void update(int pos,int x)
{
    for(int i=pos; i<=n; i+=zeros(i)) aib[i]-=x ;
}
int query(int pos)
{
    int sum=0 ;
    for(int i=pos; i>0; i-=zeros(i)) sum+=aib[i] ;
    return sum ;
}
int main()
{
    fin>>n>>m;
    for(int i=1; i<=n; ++i) fin>>x,add(i,x) ;
    for(int i=1;i<=m;++i){
        fin>>op>>x>>y ;
        if(!op) update(x,y) ;
        else fout<<query(y)-query(x-1)<<'\n' ;
    }

        return 0;
}