Cod sursa(job #3186028)

Utilizator aeandreescuAndreescu Ana-Eliza aeandreescu Data 21 decembrie 2023 02:51:22
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;

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

const int nmax= 15000;

int n;
int aib[nmax+1];

void update(int x, int y) {
    for ( int i= x; i<=n; i+= (i^(i-1))&i ) {
        aib[i]+= y;
    }
}

int query( int x ) {
    int sol= 0;
    for ( int i= x; i>0; i-= (i^(i-1))&i ) {
        sol+= aib[i];
    }

    return sol;
}

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

    for ( int i= 1, x; i<=n; ++i ) {
        fin>>x;
        update(i, x);
    }

    for ( int i= 0, t, x, y; i<m; ++i ) {
        fin>>t>>x>>y;
        if ( t==0 ) {
            update(x, -y);
        } else {
            fout<<query(y)-query(x-1)<<"\n";
        }
    }

    return 0;
}