Cod sursa(job #1667923)

Utilizator VicktorVictor Teodor Stoian Vicktor Data 29 martie 2016 13:04:20
Problema Datorii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>
#define zeros(x) ( (x ^ (x - 1)) & x )
using namespace std;

ifstream fin("datorii.in");
ofstream fout("datorii.out");
int n,m,aib[150005];

void update(int x, int k){

    for(;x<=n;x+=zeros(x))
        aib[x]+=k;
}
int query(int x){
    int s=0;
    for(;x>0;x-=zeros(x))
        s+=aib[x];
    return s;
}
int main()
{
    int x,y,t;
    fin>>n>>m;
    for(int i=1;i<=n;i++){
        fin>>x;
        update(i,x);
    }
    for(int i=1;i<=m;i++){
        fin>>t>>x>>y;
        if(t)
            fout<<query(y)-query(x-1)<<'\n';
        else
            update(x,-y);
    }
    return 0;
}