Cod sursa(job #1519287)

Utilizator danstefanDamian Dan Stefan danstefan Data 7 noiembrie 2015 09:16:04
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <bits/stdc++.h>
#define UB(x) (x&(-x))
using namespace std;
int aib[15010],v[15010],m,n,i,a,b,c,s;
void Add(int in,int x)
{
    int i;
    for(i=in; i<=n; i+=UB(i))
        aib[i]+=x;
}
int Suma(int x,int y)
{
    int i,s1=0,s2=0;
    for(i=x; i>0; i-=UB(i))
        s1+=aib[i];
    for(i=y-1; i>0; i-=UB(i))
        s2+=aib[i];
    return s1-s2;
}
int main()
{
    freopen("datorii.in","r",stdin);
    ofstream g ("datorii.out");
    scanf("%d%d",&n,&m);
    for(i=1; i<=n; ++i)
    {
        scanf("%d",&v[i]);
        Add(i,v[i]);
    }
    for(i=1; i<=m; ++i)
    {
        scanf("%d%d%d",&a,&b,&c);
        if(a==0)
       Add(b,-c);
       else g<<Suma(c,b)<<'\n';
    }

    return 0;
}