Cod sursa(job #1630390)

Utilizator DysKodeTurturica Razvan DysKode Data 5 martie 2016 08:52:44
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

using namespace std;

int aib[15010],i,j,n,m,q,p,x;
ifstream fin("datorii.in");
ofstream fout("datorii.out");

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

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

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

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

    for( i = 1 ; i <= m ; i++ )
    {
        fin>>q>>p>>j;
        if( q == 0 )
        {
            up( p , -j );
        }
        else
        {
            fout<<qr( j )-qr( p - 1 )<<'\n';
        }
    }

return 0;
}