Cod sursa(job #1470093)

Utilizator borcanirobertBorcani Robert borcanirobert Data 10 august 2015 13:24:06
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
using namespace std;

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

const int MAXN = 15005;
int N, a[MAXN];
int AIB[MAXN];
int M, x, y;
bool type;

void Minus( int x, int val );
int Sum( int x );
int NZero( int x )
{
    return ( x xor (x - 1) ) & x;
}

int main()
{
    int i;

    fin >> N >> M;
    for ( i = 1; i <= N; i++ )
    {
        fin >> a[i];
        Minus( i, -a[i] );
    }

    for ( i = 1; i <= M; i++ )
    {
        fin >> type;

        if ( type == 0 )
        {
            fin >> x >> y;
            Minus(x, y);
        }
        else
        {
            fin >> x >> y;
            fout << Sum(y) - Sum(x - 1) << '\n';
        }
    }

    fin.close();
    fout.close();
    return 0;
}

void Minus( int x, int val )
{
    int i;
    for ( i = x; i <= N; i += NZero(i) )
        AIB[i] -= val;
}

int Sum( int x )
{
    int i, rez = 0;

    for ( i = x; i > 0; i -= NZero(i) )
        rez += AIB[i];

    return rez;
}