Cod sursa(job #2679004)

Utilizator KPP17Popescu Paul KPP17 Data 29 noiembrie 2020 12:34:59
Problema Arbori indexati binar Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#define fisier "aib"
std::ifstream in(fisier ".in");
std::ofstream out(fisier ".out");
int V[100001], n, m;
int S(int i)               {return i? V[i] + S(i ^ i & -i): 0;}
void U(int i, int e)       {if (i <= n) V[i] += e, U(i + (i & -i), e);}
int P(int s, int i, int l) {return l? (s < S(i + (l >>= 1))? P(s, i, l): P(s, i + l, l)): (i and i <= n and S(i) == s? i: -1);}
int main()
{
    in >> n >> m;
    for (int i = 1; i <= n; i++)
        {int e; in >> e; U(i, e);}
    while (m--)
    {
        int v, a, b; in >> v >> a; if (v < 2) in >> b;
        switch (v)
        {
            case 0: U(a, b); break;
            case 1: out << S(b) - S(a-1) << '\n'; break;
            case 2: out << P(a, 1, n) << '\n';
        }
    }
}