Cod sursa(job #3173524)

Utilizator paaull69Ion Paul paaull69 Data 22 noiembrie 2023 23:51:13
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>

using namespace std;
typedef long long int ll;
#define MOD 1000000007


ifstream fin("datorii.in");
ofstream fout("datorii.out");

int k;
int n,m;
int a[16001];


int main()
{
    fin >> n >> m;
    for(int i=1;i<=n;i++)
    {
        fin >> a[i];
    }
    for(int i=1;i<=n;i++)
    {
        if(i+(i&-i) <= n)
        {
            a[i+(i&-i)]+=a[i];
        }
    }
    while(m--)
    {
        int x;
        fin >> x;
        if(!x)
        {
            int t,v;
            fin >>t >> v;
            for(int i=t;i<=n;i+=(i&-i))
            {
                a[i]-=v;
            }
        }
        else
        {
            int l,r;
            fin >> l >> r;
            int res=0;
            for(int i=r;i>=1;i-=(i&-i))
            {
                res += a[i];
            }
            for(int i=l-1;i>=1;i-=(i&-i))
            {
                res -= a[i];
            }
            fout << res << '\n';
        }
    }
}