Cod sursa(job #1269277)

Utilizator ZoranZomboratZoran Zomborat Goran ZoranZomborat Data 22 noiembrie 2014 01:40:52
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <iostream>
#include <fstream>
#define N_max 15005
int n,m,op,x,y;
int aib[N_max];
using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

int query (int x)
{
int aux=x,suma=0;
while(x>0)
{
suma+=aib[x];
aux-=1;
aux=~aux;
aux=x&aux;
x-=aux;
}
return suma;
}

void update (int x,int y)
{
int aux=x;
while(x<=n)
{
aib[x]+=y;
aux-=1;
aux=~aux;
aux=x&aux;
x+=aux;
}
}

int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        {
            fin>>x;
            update(i,x);
        }
    for(int i=1;i<=m;i++)
    {
        fin>>op>>x>>y;
        if(op==0)
           update(x,-y);
        else
            fout<<query(y)-query(x-1)<<endl;
    }
}