Cod sursa(job #2024101)

Utilizator Cristi_ChiraChira Cristian Cristi_Chira Data 19 septembrie 2017 22:24:46
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
#define lsb(x) (x&(-x))
#define DM 15005

using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n, m, aib[DM], a, b;
int suma( int d )
{
    int result = 0;
    for( int i = d; i > 0; i -= lsb(i))
    {
        result += aib[i];
    }
    return result;
}

void updt( int sant, int value )
{
    for( int i = sant; i <= n; i += lsb(i))
    {
        aib[i] += value;
    }

}

int main()
{
    int aux, tip;
    fin >> n >> m;
    for( int i = 1 ; i <= n; i++)
        fin >> aux, updt( i, aux );
    for( int i = 1; i <= m; i++)
    {
        fin >> tip >> a >> b;
        if( tip == 0 )
        {
            updt(a,-b);
        }
        else
            fout << suma( b ) - suma( a - 1 ) << "\n";
    }
    return 0;
}