Cod sursa(job #1849388)

Utilizator GeanaVladGeana Vlad GeanaVlad Data 17 ianuarie 2017 14:37:12
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int v[15001],aib[15001],n,q,i,x,y,p;
int zeroes(int x)
{
    return ((x ^ (x-1)) & x);
}
void add(int x,int quantity)
{
    for(int i=x;i<=n;i+=zeroes(i))
        aib[i]+=quantity;
}
int compute(int x)
{
    int ans=0;
    for(int i=x;i>0;i-=zeroes(i))
        ans+=aib[i];
    return ans;
}
int main()
{
    f>>n>>q;
    for(i=1;i<=n;i++)
        f>>v[i];
    for(i=1;i<=n;i++)
        add(i,v[i]);
    for(i=1;i<=q;i++)
    {
        f>>p;
        if(p==0)
        {
            f>>x>>y;
            add(x,-y);
        }
        else
        {
            f>>x>>y;
            g<<compute(y)-compute(x-1)<<'\n';
        }
    }
}