Cod sursa(job #1723838)

Utilizator andreiSevastreAndrei Sevastre andreiSevastre Data 1 iulie 2016 16:51:59
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <iostream> 

using namespace std;

int v[19][250010];
int n, m, q, p;

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", &v[0][i]);
	}
	
	for(int i=1; i<=18; i++)
	{
		for(int j=1; j<=n; j++)
		{
			v[i][j]=v[i-1][v[i-1][j]];
		}
	}
	
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d", &q, &p);
		
		while (q && p) {
			int t = 0;
			while (p > (1 << (t + 1))) {
				t++;
			}
			
			q = v[t][q];
			p -= (1 << t);
		}
		printf("%d\n", q);
	}
	return 0;
}