Cod sursa(job #2118507)

Utilizator racheriunicolaechowchow racheriunicolae Data 30 ianuarie 2018 18:35:15
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#define  MAX 15005
using namespace std;
int nr(int x)
{
    return (x&-x);
}
int n,arb[MAX];
void update(int x,int y)
{
    int i=x;
    while(i<=n)
    {
        arb[i]+=y;
        i+=nr(i);
    }
}
int query(int x)
{
    int s;
    s=0;
    for(int i=x;i>=1;i-=nr(i))
    {
        s+=arb[i];
    }
    return s;
}
int q,i,x,t,z,y;
int main()
{
    ifstream fin("datorii.in");
    ofstream fout("datorii.out");
    fin>>n>>q;
    for(i=1;i<=n;i++)fin>>x,update(i, x);
    for(t=1;t<=q;t++)
    {
        fin>>z>>x>>y;
        if(z==0)
        {
            update(x,-y);
        }
        else
        {
            fout<<query(y)-query(x-1)<<"\n";
        }
    }
    return 0;
}