Cod sursa(job #2970663)

Utilizator ATudorAAparaschivei Tudor Andrei ATudorA Data 25 ianuarie 2023 17:59:26
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;
ifstream f("datorii.in");
ofstream g("datorii.out");
int v[15003];
int aib[15003];
int n;
void build(int x,int val)
{
    if(x>n)
        return;
    aib[x]=aib[x]+val;
    build(x+(x&(-x)),val);
}
void update(int x,int val)
{
    if(x>n)
        return;
    aib[x]=aib[x]-val;
    update(x+(x&(-x)),val);
}
int getsum(int x)
{
    if(x==0)
        return 0;
    return aib[x]+getsum(x-(x&(-x)));
}
int main()
{
    int m,i,op,a,b;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
        build(i,v[i]);
    }
    for(i=1;i<=m;i++)
    {
        f>>op>>a>>b;
        if(op==0)
        {
            update(a,b);
        }
        if(op==1)
        {
            g<<getsum(b)-getsum(a-1)<<'\n';
        }
    }
    return 0;
}