Cod sursa(job #660367)

Utilizator cristibBalu Cristian cristib Data 12 ianuarie 2012 18:33:37
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#define nmax 15005

using namespace std;

int a[nmax], n, m;

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

int bit(int x){

    return x&(-x);

}

void udpate(int poz, int val);

void citeste(){

    f>>n>>m;
    for(int i=1; i<=n; ++i){
        int x;
        f>>x;
        udpate(i,x);
    }

}

void udpate(int poz, int val){

    for(int i=poz; i<=n; i+=bit(i))
        a[i] += val;

}

int query(int x){

    int s = 0;

    for(int i=x; i; i-=bit(i))
        s += a[i];

    return s;

}

void rezolva(){

    for(int i=1; i<=m; ++i){
        int tip, x, y;
        f>>tip>>x>>y;
        if (tip) g<<query(y) - query(x-1)<<"\n";
        else udpate(x,-y);
    }

}

int main(){

    citeste();
    rezolva();

    f.close();
    g.close();

    return 0;

}