Cod sursa(job #973515)

Utilizator FlameingoAiordachioaei Marius Flameingo Data 14 iulie 2013 17:20:22
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
#include <algorithm>
using namespace std;

const int DMAX = 250003;
int D[19][DMAX], l2[DMAX];

int main () {

    freopen ("stramosi.in", "r", stdin);
    freopen ("stramosi.out", "w", stdout);
    int N, M, i, j, x, y;
    scanf ("%d%d", &N, &M);

    for (i = 1; i <= N; ++i)
        scanf ("%d", &D[0][i]), l2[i + 1] = l2[(i + 1) >> 1] + 1;

    for (i = 1; (1 << i) <= N; ++i)
        for (j = 1; j <= N; ++j)
            D[i][j] = D[i - 1][D[i - 1][j]];

    while (M--) {
        scanf ("%d%d", &x, &y);
        while (y) {
            x = D[l2[y]][x];
            y -= 1 << l2[y];
        }
        printf ("%d\n", x);
    }

}