Cod sursa(job #3357712)

Utilizator gaminggodBarbulescu Luca Traian gaminggod Data 13 iunie 2026 11:56:55
Problema Datorii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

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

int n;
vector <int> aib;
void actualizare(int poz, int x)
{
    while(poz<=n)
    {
        aib[poz]+=x;
        int p2=poz&(-poz);
        poz+=p2;
    }
}

int interogare(int poz)
{
    int s=0;
    while(poz>0)
    {
        s+=aib[poz];
        int p2=poz&(-poz);
        poz-=p2;
    }
    return s;
}

int main()
{
    int m;
    fin>>n>>m;
    aib.resize(n+1);
    for(int i=1;i<=n;i++)
    {
        int x;
        fin>>x;
        actualizare(i,x);
    }
    while(m--)
    {
        int tip, t, v;
        fin>>tip>>t>>v;
        if(tip==0)
        {
            actualizare(t,-v);
        }
        else
        {
            fout<<interogare(v)-interogare(t-1)<<"\n";
        }
    }
    return 0;
}