Cod sursa(job #3180826)

Utilizator paull122Paul Ion paull122 Data 6 decembrie 2023 00:27:53
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
using namespace std;

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

int a[15001];
int n,m;

void update(int p,int x)
{
    for(int i=p;i<=n;i+=(i&-i))
    {
        a[i]+=x;
    }
}
int query(int p)
{
    int sum=0;
    for(int i=p;i>=1;i-=(i&-i))
    {
        sum += a[i];
    }
    return sum;
}
int main()
{
    fin >> n >> m;
    for(int i=1;i<=n;i++)
    {
        int x;
        fin >> x;
        a[i]+=x;
        if(i+(i&-i)<=n)
        {
            a[i+(i&-i)]+=a[i];
        }
    }
    while(m--)
    {
        int t,a,b;
        fin >> t >> a >> b;
        if(t==0)
        {
            update(a,-1 * b);
        }
        if(t==1)
        {
            fout << query(b)-query(a-1) << "\n";
        }
    }
}