Cod sursa(job #3228624)

Utilizator tonealexandruTone Alexandru tonealexandru Data 9 mai 2024 11:19:42
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

int aib[15005],n;
inline int lsb(int a)
{
    int b = (a & -a);
    return b;
}

inline void update(int a, int x)
{
    for(int i=x;i<=n;i+=lsb(i))
        aib[i]+=a;
}

inline int calc(int x)
{
    int s=0;
    for(int i=x;i>0;i-=lsb(i))
        s+=aib[i];
    return s;
}

int main()
{
    ifstream cin("datorii.in");
    ofstream cout("datorii.out");
    int q,k;
    cin>>n>>q;
    for(int i=1;i<=n;i++)
    {
        cin>>k;
        update(k, i);
    }

    int op,a,b;
    for(int i=0;i<q;i++)
    {
        cin>>op>>a>>b;
        if(op == 1)
        {
            cout<<calc(b) - calc(a-1)<<'\n';
        }
        else if(op == 0)
        {
            update(-b, a);
        }
    }
    return 0;
}