Cod sursa(job #1852751)

Utilizator luci2000lup lucia luci2000 Data 21 ianuarie 2017 10:08:11
Problema Datorii Scor 100
Compilator cpp Status done
Runda gym_emag_avansati_2016 Marime 0.82 kb
#include <iostream>
#include <fstream>

using namespace std;

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

#define lim 15001
int n,aib[lim];


void update(int poz, int val)
{
    for(; poz<=n; poz+=(poz&(-poz)) )
        aib[poz]+=val;
}




int sum(int pos)
{
    int rez=0;
    for(; pos>=1; pos-=(pos&(-pos)) )
        rez+=aib[pos];
    return rez;
}




int query(int st, int dr)
{
    return sum(dr)-sum(st-1);
}





int main()
{
    int m,i,tip,x,y,j;
    fin>>n>>m;

    for(i=1; i<=n; i++)
    {
        fin>>x;
        update(i,x);
    }


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

        if(tip==0)
            update(x,-y);
        else
            fout<<query(x,y)<<'\n';
    }


    fin.close();
    fout.close();
    return 0;
}