Cod sursa(job #1695444)

Utilizator ZanoxNonea Victor Zanox Data 27 aprilie 2016 10:13:45
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
#include <iostream>

#define zeroes(x) (x^(x-1))&x

using namespace std;

fstream f,g;

int d[15001],qt,t,v,p,q,n,m,i,j,k,l,o;

void add(int t,int v)
{
    for(;t<=n;t+=zeroes(t))d[t]+=v;
}

int comp(int t)
{
    int sol;
    for(sol=0;t>0;t-=zeroes(t))sol+=d[t];
    return sol;
}

int main()
{
    f.open("datorii.in",ios_base::in);
    g.open("datorii.out",ios_base::out);
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>j;
        add(i,j);
    }
    for(i=0;i<m;i++)
    {
        f>>qt;
        if(qt==0)
        {
            f>>t>>v;
            add(t,-v);
        }
        else
        {
            f>>p>>q;
            o=comp(q)-comp(p-1);
            g<<o<<'\n';
        }
    }
}