Cod sursa(job #2959875)

Utilizator nodea98nodea adrian nodea98 Data 2 ianuarie 2023 22:06:40
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;

ifstream cin("datorii.in");
ofstream cout("datorii.out");

const int NMAX=1e5+5;
int aib[NMAX],n;

void update(int poz,int val)
{
    if(poz>n)
    {
        return;
    }
    aib[poz]+=val;
    update(poz+((poz^(poz-1))+1)/2,val);
}

int query(int poz)
{
    if(poz==0)
    {
        return 0;
    }
    return aib[poz]+query(poz-((poz^(poz-1))+1)/2);
}

int main()
{
    int m,x;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        update(i,x);
    }
    for(int i=1;i<=m;i++)
    {
        int op;
        cin>>op;
        if(op==0)
        {
            int t,val;
            cin>>t>>val;
            update(t,-val);
        }
        else
        {
            int p,q;
            cin>>p>>q;
            cout<<query(q)-query(p-1)<<"\n";
        }
    }

    return 0;
}