Cod sursa(job #3204753)

Utilizator andreidumitrache1709Dumitrache Andrei Bogdan andreidumitrache1709 Data 17 februarie 2024 13:13:32
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <bits/stdc++.h>
#define MAXN 15000
using namespace std;
int aib[MAXN + 1];
void update ( int p , int val , int n ) {
    for ( ; p <= n ; p += ( p & -p ) )
        aib[p] += val;
}
int query ( int l , int n ) {
    int ans = 0;
    for ( ; l > 0 ; l -= ( l & -l ) )
        ans += aib[l];
    return ans;
}
int main() {
    ifstream cin( "datorii.in" );
    ofstream cout ( "datorii.out" );
    int n , tip , p , l , r , q , i , a;
    cin >> n >> q;
    for ( i = 1 ; i <= n ; i++ ) {
        cin >> a;
        update( i , a , n );
    }
    for ( i = 0 ; i < q ; i++ ) {
        cin >> tip >> l >> r;
        if ( tip == 0 )
            update ( l , -r , n );
        else
            cout << query( r , n ) - query( l - 1 , n ) << '\n';
    }
    return 0;
}