Cod sursa(job #1011624)

Utilizator Athena99Anghel Anca Athena99 Data 17 octombrie 2013 01:06:46
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

using namespace std;

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

const int nmax=15000;

int n;
int ft[nmax+1];

void ft_upd( int p, int x ) {
    for ( int i= p; i<=n; i= 2*i-(i&(i-1)) ) {
        ft[i]+= x;
    }
}

int ft_que( int p ) {
    int sol= 0;
    for ( int i= p; i>0; i&= i-1 ) {
        sol+= ft[i];
    }
    
    return sol;
}

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

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

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

    return 0;
}