Cod sursa(job #556689)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 16 martie 2011 11:40:52
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include<stdio.h>
#define dim 15015

using namespace std;
int c[dim],n,m;

int bit(int i)
{
    return i&(-i);
}
void update (int poz , int x)
{
    for(int i=poz ; i<=n ; i+=bit(i))
        c[i]+=x;
}
void read()
{
    scanf("%d %d",&n ,&m);
    int x;
    for(int i=1 ; i<=n;i++)
    {
        scanf("%d",&x);
        update(i,x);
    }
}
int querry ( int x)
{
    int s=0;
    for(int i=x ; i>=1 ; i-=bit(i))
    {
        s+=c[i];
    }
    return s;
}
void solve()
{
    int ziua , val ,op,x,y;
    for(int k=1 ; k<=m;k++)
    {
        scanf("%d",&op);
        if ( op==0)
        {

            scanf("%d %d",&ziua , &val );
            update ( ziua , -val);
        }
        else
        if ( op==1)
        {
            scanf("%d %d",&x,&y);
            printf("%d\n",querry(y)-querry(x-1));
        }
    }
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    read();
    solve();
   return 0;
}