Cod sursa(job #1866408)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 3 februarie 2017 00:01:51
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
#define zeros(x) ((x^(x-1)) & x )
#define N 15010

using namespace std;

ifstream f("datorii.in");
ofstream g("datorii.out");

int maxArb[N];
int n,m,i,j,k,t,p,r;
void Add(int p,int quant)
{
    int i;
    for(i=p;i<=n;i+=zeros(i))
        maxArb[i]+=quant;
}
int Query(int p)
{
    int i,sum=0;
    for(i=p;i>0;i=i-zeros(i))
    sum=sum+maxArb[i];
    return sum;
}
int main()
{
    int x,y,z;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>x;
        Add(i,x);
    }
    while(m!=0)
    {
        f>>x>>y>>z;
        if(x==0)
        {
            Add(y,z*(-1));
        }
        else
        {
            g<<Query(z)-Query(y-1)<<"\n";
        }
        m--;
    }
}