Cod sursa(job #982285)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 8 august 2013 21:49:53
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <cstdio>

using namespace std;

const char infile [] = "datorii.in";
const char outfile[] = "datorii.out";

int aib[15001],n,m,x,y;
bool op;

void update (int i, int val)
{
    int lowest_bit;
    while (i<=n)
    {
        aib[i] += val;
        lowest_bit = i&(-i);
        i += lowest_bit;
    }
}

int query (int i)
{
    int lowest_bit,s=0;
    while (i>0)
    {
        s+=aib[i];
        lowest_bit = i&(-i);
        i -= lowest_bit;
    }
    return s;
}

int main()
{
    freopen (infile,"r",stdin);
    freopen (outfile,"w",stdout);

    scanf ("%d %d",&n,&m);

    for (int i=1; i<=n; i++)
    {
        scanf ("%d", &x);
        update (i,x);
    }

    for (int i=1; i<=m; i++)
    {
        scanf ("%d", &op);
        if (!op)
        {
            scanf ("%d %d", &x, &y);
            update (x,-y);
        }
        else
        {
            scanf ("%d %d", &x, &y);
            printf ("%d\n",(query(y)-query(x-1)));
        }
    }
}