Cod sursa(job #3152574)

Utilizator ReBeGhElRebegea Stefan ReBeGhEl Data 25 septembrie 2023 20:03:01
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

using namespace std;
int aib[150005],n;
void update( int i , int a)
{
    while(i<=n)
    {
        aib[i]+=a;
        i+=(i&-i);
    }
}
int prefix(int i)
{
    int sum=0;
    while(i>0)
    {
        sum+=aib[i];
        i-=(i&-i);
    }
    return sum;
}
int range_sum(int l, int r)
{
    return prefix(r)-prefix(l-1);
}
int main()
{
    ifstream cin ("datorii.in");
    ofstream cout ("datorii.out");
    int q,a;
    cin>>n>>q;
    for(int i=1;i<=n;i++)
    {
        cin>>a;
        update(i,a);
    }
    int tip, b;
    for(int i=1;i<=q;i++)
    {
        cin>>tip>>a>>b;
        if(tip==0)
        {
            update(a,-b);
            continue;
        }
        cout<<range_sum(a,b)<<'\n';
    }
    return 0;
}