Cod sursa(job #2900625)

Utilizator RaresPoinaruPoinaru-Rares-Aurel RaresPoinaru Data 11 mai 2022 16:48:46
Problema Datorii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 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;
}