Cod sursa(job #3352591)

Utilizator dubitDarius Dubit dubit Data 29 aprilie 2026 10:49:34
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
/*
 * author [dubit]
*/
#include <bits/stdc++.h>

using namespace std;

int N,M;

struct Fenwick{
    int n,tree[15005];

    Fenwick(int sz)
    {
        n=sz;
        for(int i=0;i<=n;i++)
            tree[i]=0;
    }

    void add(int idx,int val)
    {
        for(;idx<=n;idx+=idx&-idx)
            tree[idx]+=val;
    }

    void A(int idx,int val)
    {
        for(;idx<=n;idx+=idx&-idx)
            tree[idx]=max(0,tree[idx]-val);
    }

    int B(int idx)
    {
        int sum=0;
        for(;idx>0;idx-=idx&-idx)
            sum+=tree[idx];
        return sum;
    }
};

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    freopen("datorii.in","r",stdin);
    freopen("datorii.out","w",stdout);


    cin>>N>>M;
    Fenwick v(N);

    for(int i=1;i<=N;i++)
    {
        int x;
        cin>>x;
        v.add(i,x);
    }

    while(M--)
    {
        int tip,a,b;
        cin>>tip>>a>>b;

        if(tip==0)
            v.A(a,b);
        else
            cout<<v.B(b)-v.B(a-1)<<'\n';
    }
    return 0;
}