Cod sursa(job #2652466)

Utilizator evelina.nitoiuNitoiu Evelina evelina.nitoiu Data 24 septembrie 2020 22:18:01
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 100005;
int n;
int v[NMAX], s[NMAX];

int len(int x) {
    return (x - (x & (x - 1)));
}

void update(int pz, int val) {
    while (pz <= n) {
        s[pz] += val;
        pz += len(pz);
    }
}

int querry (int pz) {
    int rz = 0;
    while (pz > 0) {
        rz += s[pz];
        pz -= len(pz);
    }
    return rz;
}

int main(){
    int m,op,a,b,rz;
    in>>n>>m;
    for(int i=1;i<=n;i++){
        in>>v[i];
        update(i,v[i]);
    }
    for(int i=1;i<=m;i++)
    {
        in>>op>>a>>b;
        if(op==0){
            update(a,-b);
        }
        if(op==1){
            rz=querry(b)-querry(a-1);
            out<<rz<<"\n";
        }
    }
    return 0;
}