Cod sursa(job #2890215)

Utilizator cyg_TheoPruteanu Theodor cyg_Theo Data 14 aprilie 2022 22:19:48
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>

using namespace std;

typedef long long ll;
const int NMAX = 250005;
const int LMAX = 18;

int dp[LMAX][NMAX];

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

	int n,q;
	scanf("%d%d", &n, &q);

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

	for(int l=1; l<LMAX; ++l)
		for(int i=1; i<=n; ++i)
			dp[l][i] = dp[l-1][dp[l-1][i]];

	int x,k;
    for(; q; q--){

		scanf("%d%d", &x, &k);

		for(int l=0; l<LMAX; ++l)
			if(k&(1<<l)){
				if(x == 0) break;
				x = dp[l][x];
			}

		if(x)
			printf("%d\n", x);
		else
			printf("0\n");
	}

	return 0;
}