Cod sursa(job #1247740)

Utilizator akaprosAna Kapros akapros Data 23 octombrie 2014 16:10:47
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int n,i,j,nr,AIB[15005],m,p,q;
void ADD(int x,int y)
{
    int i;
    for (i=x;i<=n;i=i+(i&(-i)))
    AIB[i]+=y;
}
int SUM(int x)
{
    int i,s=0;
    for (i=x;i>=1;i=i-(i&(-i))) s=s+AIB[i];
    return s;
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    scanf("%d %d",&n,&m);
    for (i=1;i<=n;i++)
    {
        scanf("%d",&nr);
        ADD(i,nr);
    }
    while (m--)
    {
        scanf("%d",&nr);
        if (nr==0)
        {
            scanf("%d %d",&p,&q);
            ADD(p,-q);
        }
        if (nr==1)
        {
            scanf("%d %d",&p,&q);
            printf("%d\n",SUM(q)-SUM(p-1));
        }
    }
    return 0;
}