Cod sursa(job #1814782)

Utilizator refugiatBoni Daniel Stefan refugiat Data 24 noiembrie 2016 15:52:31
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream si("datorii.in");
ofstream so("datorii.out");
int aib[15005],n;
void update(int poz,int a)
{
    while(poz<=n)
    {
        aib[poz]+=a;
        poz+=(poz&(-poz));
    }
}
int query(int a)
{
    int sol=0;
    while(a)
    {
        sol+=aib[a];
        a-=a&(-a);
    }
    return sol;
}
int main()
{
    int m;
    si>>n>>m;
    int a,b,c,i;
    for(i=1;i<=n;++i)
    {
        si>>a;
        update(i,a);
    }
    while(m--)
    {
        si>>a>>b>>c;
        if(a==0)
        {
            update(b,-c);
        }
        else
        {
            if(a==1)
            {
                so<<query(c)-query(b-1)<<'\n';
            }
        }
    }
    return 0;
}