Cod sursa(job #1454317)

Utilizator piroComisia piro Data 26 iunie 2015 01:39:06
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>

int parent[19][250001];

int main() {
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);

    int n, q;
    scanf("%d%d", &n, &q);
    for (int i = 1; i <= n; ++i)
        scanf("%d", &parent[0][i]);

    for (int pw = 1; (1 << pw) <= n; ++pw)
        for (int i = 1; i <= n; ++i)
            parent[pw][i] = parent[pw - 1][parent[pw - 1][i]];

    while (q--) {
        int which, nod;
        scanf("%d%d", &nod, &which);
        for (int pw = 0; (1 << pw) <= which; ++pw)
            if (which & (1 << pw))
                nod = parent[pw][nod];
        printf("%d\n", nod);
    }

    return 0;
}