Cod sursa(job #1498900)

Utilizator metrix007Lungu Ioan Adrian metrix007 Data 9 octombrie 2015 21:02:14
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>
#define NMAX 1503
using namespace std;

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

int n,m,v[NMAX],val,poz,t,a,b,sum,aib[NMAX];

void citire()
{
    in >> n >> m;
    for(int i=1;i<=n;i++)
        in >> v[i];
}

void update(int i,int delta)
{
    for(;i<=n;i=i+(i&(-i)))
    {
        aib[i] = aib[i] + delta;
    }
}

int sums(int i)
{
    int suma=0;
    for(;i>0;i=i-(i&(-i)))
    {
        suma+= aib[i];
    }
    return suma;
}

void getsum(int a,int b)
{
    sum = 0;
    sum = sums(b) - sums(a-1);
}

int main()
{
    citire();
    for(int i=1;i<=n;i++)
    {
        poz = i;
        val = v[i];
        update(poz,val);
    }

    for(int i=0;i<m;i++)
    {
        in>> t >> a >> b;
        if(t==0)
        {
            poz = a;
            val = (-1)*b;
            update(poz,val);
        }
        else
        {

            sum = 0;
            getsum(a,b);
            out << sum << "\n";
        }
    }

    return 0;
}