Cod sursa(job #2233158)

Utilizator ContDeRacistAliniateEBlat ContDeRacist Data 22 august 2018 14:08:23
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>

using namespace std;

ifstream cin("stramosi.in");
ofstream cout("stramosi.out");

const int N = 25e4 + 7, LN = 20;

int rmq[N][LN];

int main()
{
    int n, q, p;
    cin >> n >> q;
    for (int i = 1; i <= n; ++i)
        cin >> rmq[i][0];
    for (int i = 1; i <= n; ++i)
        for (int p = 1; (1<<p) <= n; ++p)
            rmq[i][p] = rmq[rmq[i][p - 1]][p - 1];
    while (q--) {
        cin >> n >> p;
        int pow(0);
        while (p) {
            if (p&1)
                n = rmq[n][pow];
            p >>= 1;
            ++pow;
        }
        cout << n << '\n';
    }
    return 0;
}