Cod sursa(job #1516972)

Utilizator Cristi1221Mazilu Cristian Cristi1221 Data 3 noiembrie 2015 19:10:50
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<fstream>
using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int n,m,e[15010],x,t,v,p,q,opt;
void adauga (int poz, int val) {
    for(int i=poz;i<=n;i+=(i&(-i)))
        e[i]-=val;
}
int suma (int lim){
    int s=0;
    for(int i=lim;i>0;i-=(i&(-i))){
        s+=e[i];
    }
    return s;
}
int main () {
    f>>n>>m;
    for(int i=1;i<=n;++i){
        f>>x;
        for(int j=i;j<=n;j+=(j&(-j)))
            e[j]+=x;
    }
    for(int j=1;j<=m;j++){
        f>>opt;
        if(opt==0){
            f>>t>>v;
            adauga(t,v);
        }
        else{
            f>>p>>q;
            g<<suma(q)-suma(p-1)<<'\n';
        }
    }
    g.close();
    return 0;
}