Cod sursa(job #1856915)

Utilizator NineshadowCarapcea Antonio Nineshadow Data 25 ianuarie 2017 17:12:21
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
#define MAXN 15005
using namespace std;
ifstream in("datorii.in");
ofstream out("datorii.out");
int n,m,AIB[MAXN],x,y;
int zero(int x)
{
    return (x^(x-1))&x;
}
void add(int i,int q)
{
    for(;i<=n;i+=zero(i))
        AIB[i]+=q;
}
int query(int i)
{
    int r=0;
    for(;i>0;i-=zero(i))
        r+=AIB[i];
    return r;
}
int main()
{
    in>>n>>m;
    for(int i=1;i<=n;++i)
        {
            in>>x;
            add(i,x);
        }
    for(int i=1;i<=m;++i)
    {
        in>>x;
        if(x==0)
        {
        in>>x>>y;
        add(x,-y);
        }
        else
        {
        in>>x>>y;
        out<<query(y)-query(x-1)<<'\n';
        }

    }
    return 0;
}