Cod sursa(job #1632391)

Utilizator DysKodeTurturica Razvan DysKode Data 6 martie 2016 09:07:50
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;

int aib[15010],i,j,n,m,q,t,p,x;

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

int zero( int x )
{
    return ( x & (-x) );
}

void upd( int poz, int val )
{
    int i;
    for( i = poz ; i <= n ; i += zero(i) )
    {
        aib[ i ] += val;
    }
}

int sum( int poz )
{
    int i,ans=0;
    for( i = poz ; i > 0 ; i -= zero(i) )
    {
        ans += aib[ i ];
    }
    return ans;
}

int main()
{
    fin>>n>>m;
    for( i = 1 ; i <= n ; i++ )
    {
        fin>>x;
        upd( i , x );
    }
    for( i = 1 ; i <= m ; i++ )
    {
        fin>>q>>t>>p;
        if( q == 0 )
        {
            upd( t , -p );
        }
        else
        {
            fout<<sum(p)-sum(t-1)<<'\n';
        }
    }

return 0;
}