Cod sursa(job #1854641)

Utilizator hasmasandragosHasmasan Dragos hasmasandragos Data 22 ianuarie 2017 23:01:58
Problema Datorii Scor 100
Compilator cpp Status done
Runda gym_emag_avansati_2016 Marime 0.89 kb
#include <bits/stdc++.h>
#define step(x) (x&(-x))
using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");

const int nmax=15005;
int arb[nmax],n,m;

void update (int poz , int val)
{
    int h;
    for (h=poz;h<=n;h+=step(h))
     arb[h]+=val;
}

int query (int poz)
{
    int h,sum=0;
    for (h=poz;h>=1;h-=step(h))
     sum+=arb[h];

    return sum;
}

int main()
{
    int op,i,valoare,pozitie,stanga,dreapta;
    f>>n>>m;
    for (i=1;i<=n;i++)
    {
        f>>valoare;
        update(i,valoare);
    }

    for (i=1;i<=m;i++)
    {
        f>>op;
        if (op==0)
        {
            f>>pozitie>>valoare;
            valoare*=-1;
            update(pozitie,valoare);
        }

        if (op==1)
        {
            f>>stanga>>dreapta;
            g<<query(dreapta)-query(stanga-1)<<'\n';
        }
    }

    return 0;
}