Cod sursa(job #948041)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 9 mai 2013 12:04:48
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n, m, a[15010], i, val, x, y, t, c, s;

void Procesare(int p, int v){
    int c=0;
    while(p<=n)
    {
        a[p]+=v;
        while(!(p & (1<<c)))
            c++;
        p+=(1<<c);
        c++;
    }
}

int Query(int p){
    c=0;
    s=0;
    while(p>0)
    {
        s+=a[p];
        while(!(p & (1<<c)))
            c++;
        p-=(1<<c);
        c++;
    }
    return s;
}

int main(){
    f>>n>>m;
    for(i=1; i<=n; i++)
    {
        f>>val;
        Procesare(i, val);
    }
    for(i=1; i<=m; i++)
    {
        f>>t;
        f>>x>>y;
        if(t==0)
            Procesare(x, -y);
        else
            g<<Query(y)-Query(x-1)<<"\n";
    }
    return 0;
}