Cod sursa(job #2773259)

Utilizator Victor24Vasiesiu Victor Victor24 Data 5 septembrie 2021 22:31:53
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>

using namespace std;

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

vector<int> fenwick(60005, 0);

int n,m;

int zeroes( int x ){
    return x ^ (x-1) & x;
}

void add ( int x, int value ){
    for ( int i = x ; i <= n ; i += zeroes(i) )
        fenwick[i] += value;
}

int sum ( int x ){

    int ans = 0;

    for ( int i = x ; i > 0 ; i -= zeroes(i) )
        ans += fenwick[i];

    return ans;
}

int main()
{
    f >> n >> m;
    int x;
    for ( int i = 1 ; i <= n ; i++ ){
        f>>x;
        add(i, x);
    }

    int q_type, a, b;

    for ( int i = 0 ; i < m ; i++ ){
        f >> q_type >> a >> b;
        if ( q_type == 0 )
            add(a, -b);
        else
            g << sum(b) - sum(a-1) << '\n';
    }

    return 0;
}