Cod sursa(job #2900629)

Utilizator RaresPoinaruPoinaru-Rares-Aurel RaresPoinaru Data 11 mai 2022 16:52:10
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");

const int MAXN=100010;

int n,m,a[MAXN];
int s[MAXN],aib[MAXN];

int main() {
    fin >>n>>m;

    for (int i=1;i<=n;++i){
        fin >>a[i];
        s[i]=s[i-1]+a[i];
    }
    for (int i=1;i<=n;++i){
        aib[i]=s[i]-s[i-((i^(i-1))&i)];
        //fout <<aib[i]<<' ';
    }
    //fout <<'\n';
    for (int i=1;i<=m;++i){
        int c;
        fin >>c;
        if (c==0){
            int val,pos;
            fin >>pos>>val;
            do{
                aib[pos]-=val;
                pos+=((pos^(pos-1))&pos);
            }while (pos<=n);
        }
        else{
            int x,y,sum1=0,sum2=0;
            fin >>x>>y;
            int kx=x-1;
            while (kx>0){
                sum1+=aib[kx];
                kx-=((kx^(kx-1))&kx);
            }
            int ky=y;
            while (ky>0){
                sum2+=aib[ky];
                ky-=((ky^(ky-1))&ky);
            }

            fout <<sum2-sum1<<'\n';
        }
    }
    return 0;
}