Cod sursa(job #1453664)

Utilizator theprdvtheprdv theprdv Data 24 iunie 2015 04:52:17
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
#include <stdlib.h>
#define MAXN 250000

using namespace std;

int N, M, A[20][MAXN];

int main(){
	freopen("stramosi.in", "r", stdin);
	freopen("stramosi.out", "w", stdout);
	
	scanf("%d %d", &N, &M);
	for (int i = 1; i <= N; ++i)
		scanf("%d", &A[0][i]);

	for (int i = 1; (1 << i) <= N; ++i)
		for (int j = 1; j <= N; ++j)
			A[i][j] = A[i - 1][A[i - 1][j]];
	
	while (M--){
		int n, Q, i;
		scanf("%d %d", &n, &Q);
		while (Q){
			for (i = 0; (1 << i) <= Q; ++i);
			--i, Q -= (1 << i);
			n = A[i][n];
		}
		printf("%d\n", n);
	}

	return 0;
}