Cod sursa(job #3345924)

Utilizator aadsafafdfAlexandru Spermezist aadsafafdf Data 11 martie 2026 19:42:20
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <bits/stdc++.h>
using namespace std;

#ifdef LOCAL
ifstream fin("file.in");
ofstream fout("file.out");
#else // LOCAL
ifstream fin("datorii.in");
ofstream fout("datorii.out");
//#define fin cin
//#define fout cout
#endif // LOCAL
//#define int long long
//#pragma GCC optimize("Ofast")


int n,m;
int aib[15005],v[15005],spart[15005];

void make_aib()
{
    for(int siz=1;siz<=n;siz*=2)
    {
        for(int i=1;siz*i<=n;i+=2)
        {
            aib[i*siz]=spart[i*siz]-spart[(i-1)*siz];
        }
    }
}

void update(int pos,int payment)
{
    while(pos<=n)
    {
        aib[pos]-=payment;
        pos+=pos&(-pos);
    }
}

int query(int pos)
{
    int ret=0;
    while(pos)
    {
        ret+=aib[pos];
        pos-=pos&(-pos);
    }
    return ret;
}


signed main()//97-122
{
    fin>>n>>m;
    for(int i=1;i<=n;++i)
    {
        fin>>v[i];
        spart[i]=spart[i-1]+v[i];
    }
    make_aib();
    int a,b,c;
    for(int i=1;i<=m;++i)
    {
        fin>>c>>a>>b;
        if(c==0)
        {
            update(a,b);
        }
        else fout<<query(b)-query(a-1)<<'\n';
    }


    return 0;
}