Cod sursa(job #1852334)

Utilizator eduardturtoiEduard Turtoi eduardturtoi Data 20 ianuarie 2017 18:29:48
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#define NMax 15001
#define zero(x) ((x^(x-1)) & x)
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
int AIB[NMax],n;

void Adauga(int poz,int nr)
{
    int i;
    for(i=poz;i<=n;i+=zero(i))
    {
        AIB[i]+=nr;
        if(AIB[i]<0)
            AIB[i]=0;
    }
}

int Suma(int poz)
{
    int i,S=0;
    for(i=poz;i>0;i-=zero(i))
        S+=AIB[i];
    return S;
}

int main()
{
    int i,m,op,x,y;
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        fin>>x;
        Adauga(i,x);
    }
    for(i=1;i<=n;i++)
    {
        fin>>op>>x>>y;
        if(op==0)
            Adauga(x,-y);
        else
            fout<<Suma(y)-Suma(x-1)<<'\n';
    }
    return 0;
}