Cod sursa(job #2384962)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 21 martie 2019 12:56:07
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");

long long n,m,a,v[15001],i,k,T,V,P,Q,tip;

void upd(long long x, long long p){
    for(;p<=n;p+=(p&-p))
        v[p]+=x;
}

long long query(long long p){
    long long sol=0;
    for(;p;p-=(p&-p))
        sol+=v[p];

    return sol;
}

int main(){
    fin>>n>>m;
    for(i=1;i<=n;i++){
        fin>>a;
        upd(a,i);
    }

    /*
    for(i=1;i<=n;i++)
        cout<<v[i]<<" ";
    cout<<"\n";
    */

    for(i=1;i<=m;i++){
        fin>>tip;

        if(tip==0){
            fin>>T>>V;
            upd(-V,T);
        }else{
            fin>>P>>Q;
            //cout<<query(Q)<<" "<<query(P-1)<<"\n";
            fout<<query(Q)-query(P-1)<<"\n";
        }
    }

    return 0;
}