Cod sursa(job #1690011)

Utilizator vlasiuflaviusVlasiu Flavius vlasiuflavius Data 14 aprilie 2016 18:04:16
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#define zero(x) ((x ^ ( x - 1 ) ) & x )
using namespace std;
ofstream fout ("datorii.out");
ifstream fin ("datorii.in");
int aib[100005],n,q,a,b;
int ad (int poz , int val)
{
    for( ; poz <= n ; poz += zero(poz))
        aib[ poz ] += val;
    return 1;
}
int queri (int poz)
{
    int suma = 0;
    for( ; poz > 0 ; poz -= zero(poz))
        suma += aib[ poz ];
    return suma;
}
int main()
{
    fin>>n>>q;
    for(int i = 1 ; i <= n ; i++)
    {
        int aux;
        fin>>aux;
        ad( i , aux );
    }

    for(int i = 1 ; i <= q ; i++)
    {
        int aux ;
        fin>>aux;
        if( aux == 0)
        {
            fin>>a>>b;
            ad( a , -b);
        }
        else if (aux == 1)
        {
            fin>>a>>b;
            fout<<queri( b ) - queri( a - 1 )<<'\n';
        }
    }
    return 0;
}