Cod sursa(job #1521293)

Utilizator andru47Stefanescu Andru andru47 Data 10 noiembrie 2015 09:01:24
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
#define ub(x) (x&(-x))
using namespace std;
int n,m,x,instr,y,sum,aib[100005];
void edd(int poz,int x)
{
    for (int i = poz; i<=n ; i+=ub(i))
        aib[i]+=x;
    return ;
}
int query(int poz1)
{
    int s=0;
    for (int i=poz1; i ; i-=(ub(i)))
        s+=aib[i];
    return s;
}
int main()
{
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);
    scanf("%d %d\n",&n,&m);
    for (int i = 1 ; i<=n ; ++i)
    {
        scanf("%d",&x);
        edd(i,x);
    }
    for (int i = 1 ; i<=m ; ++i)
    {
        scanf("%d %d %d\n",&instr,&x,&y);
        if (instr==0)
        {
            edd(x,-y);
        }
        else
        {
            sum+=query(y)-query(x-1);
            printf("%d\n",query(y)-query(x-1));
        }
    }
   // printf("%d\n",sum);
    return 0;
}