Cod sursa(job #1448176)

Utilizator iulianrotaruRotaru Gheorghe-Iulian iulianrotaru Data 6 iunie 2015 13:49:46
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int i,n,m,a,b,caz,AIB[15002];
int zeros(int x)
{
    return ((x^(x-1))&x);
}
void bagval(int poz,int val)
{
    while(poz<=n)
    {
        AIB[poz]+=val;
        poz+=zeros(poz);
    }
}
int Query(int poz,int suma=0)
{
    while(poz)
    {
        suma+=AIB[poz];
        poz-=zeros(poz);
    }
    return suma;
}
int main()
{
    f>>n>>m;
    for(i=1;i<=n;i++) {f>>a; bagval(i,a);}
    while(m--)
    {
        f>>caz;
        if(!caz) {f>>a>>b; bagval(a,-b);}
        else {f>>a>>b; g<<Query(b)-Query(a-1)<<'\n';}
    }
    g.close();
    return 0;
}