Cod sursa(job #1667722)

Utilizator ticozaurStratila Andrei ticozaur Data 29 martie 2016 10:22:11
Problema Datorii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
#define zeros(x) ((x^(x - 1))&x)

int AIB[15000],n,m,st,dr,x,val,ind,var;

void adauga(int ind,int val)
{   int i;
    for(i=ind; i<=n; i+=zeros(i))
        AIB[i]+=val;
}

int suma(int ind)
{
    int s=0;
    for(int i=ind; i>0; i-=zeros(i))
        s=s+AIB[i];
    return s;
}

void afis()
{
    for(int i=1; i<=n; i++)
        fout<<AIB[i]<<' ';
}
int main()
{
    fin>>n>>m;
    for(int i=1; i<=n; i++)
    {
        fin>>x;
        adauga(i,x);
    }
    for(int i=1; i<=m; i++)
     {
         fin>>var;
         if(var==0)
         {
             fin>>ind>>val;
             adauga(ind,-val);
         }
         else if(var==1)
         {
             fin>>st>>dr;
             fout<<suma(dr)-suma(st-1)<<'\n';
         }
     }
    return 0;
}