Cod sursa(job #2786181)

Utilizator mateitudordmDumitru Matei mateitudordm Data 20 octombrie 2021 14:56:21
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

using namespace std;

int aib[15001],n;
int lsb(int x)
{
    return (x & (-x));
}
void update(int poz,int val)
{
    while(poz<=n)
    {
        aib[poz]+=val;
        poz+=lsb(poz);
    }
}
int query(int dr)
{
    int s=0;
    while(dr>=1)
    {
        s+=aib[dr];
        dr-=lsb(dr);
    }
    return s;
}

int main()
{
    ifstream cin("datorii.in");
    ofstream cout("datorii.out");
    int m,i,a,b,c;
    cin>>n>>m;
    for(i=1;i<=n;i++)
    {
        cin>>a;
        update(i,a);
    }
    for(i=1;i<=m;i++)
    {
        cin>>c>>a>>b;
        if(c==0)
            update(a,b*-1);
        else
            cout<<query(b)-query(a-1)<<'\n';
    }
    return 0;
}