Cod sursa(job #3323840)

Utilizator andrei1232008nicolae andrei andrei1232008 Data 19 noiembrie 2025 23:58:01
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("datorii.in");
ofstream fout("datorii.out");
const int lim=1e5+10;
int n,q,i,x,s[4*lim],t;
void update(int x,int val)
{
    x+=n;
    while(x)
    {
        s[x]+=val;
        x/=2;
    }
}
int query(int l,int r)
{
    l+=n;
    r+=n;
    int sol=0;
    while(l<=r)
    {
        if(l%2==1)sol+=s[l];
        if(r%2==0)sol+=s[r];
        l=(l+1)/2;
        r=(r-1)/2;
    }
    return sol;
}
void solvetask()
{
    fin>>t;
    if(t==1)
    {
        int x,y;
        fin>>x>>y;
        fout<<query(x-1,y-1)<<'\n';
    }
    else
    {
        int x,val;
        fin>>x>>val;
        update(x-1,-val);
    }

}
int main()
{
    fin>>n>>q;
    for(i=1;i<=n;i++)
    {
        fin>>x;
        update(i-1,x);
    }
    while(q--)
    {
        solvetask();
    }
    return 0;
}