Cod sursa(job #3297491)

Utilizator voaidesrVoaides Robert voaidesr Data 22 mai 2025 18:23:42
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 250'000;
const int LOG = 18;
static int up[MAXN + 1][LOG + 1];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

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

    int n, m;
    fin >> n >> m;

    for (int v = 1; v <= n; ++v)
        fin >> up[v][0];

    for (int j = 1; j <= LOG; ++j)
        for (int v = 1; v <= n; ++v) {
            int mid = up[v][j - 1];
            up[v][j] = mid ? up[mid][j - 1] : 0;
        }

    while (m--) {
        int q, p;
        fin >> q >> p;

        for (int j = LOG; j >= 0 && q; --j)
            if (p & (1 << j))
                q = up[q][j];

        fout << q << '\n';
    }

    return 0;
}