Cod sursa(job #1264838)

Utilizator Eduard6421Eduard Gabriel Eduard6421 Data 16 noiembrie 2014 13:09:51
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>
#define NMAX 15001
using namespace std;
int aib[NMAX],n;
void update(int val,int poz)
{
    for(; poz<=n; poz+=poz&(poz-1)^poz)
    {
        aib[poz]+=val;
    }
}
void decrease(int val,int poz)
{
    for(; poz<=n; poz+=poz&(poz-1)^poz)
    {
        aib[poz]-=val;
    }
}
int query(int day)
{
    int s=0;
    for(; day; day-=day&(day-1)^day)
        s+=aib[day];
    return s;
}
int difquery(int day1,int day2)
{  int v;
v=query(day2)-query(day1-1);
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    int m,i,sum,day1,day2,operation;
    scanf("%d%d",&n,&m);
    for(i=1; i<=n; ++i)
    {
        scanf("%d",&sum);
        update(sum,i);
    }
    for(i=1; i<=m; ++i)
    {
        scanf("%d",&operation);
        switch(operation)
        {
        case 0 :
            scanf("%d%d",&day1,&sum);
            decrease(sum,day1);
            break;
        case 1 :
            scanf("%d%d",&day1,&day2);
            printf("%d\n",difquery(day1,day2));
            break;
        }
    }

}