Cod sursa(job #189625)

Utilizator thebest001Neagu Rares Florian thebest001 Data 16 mai 2008 13:02:09
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#define NMAX 250005
#define KMAX 18
int N, M, m[20][NMAX];
int putere(int a)
{
	int p = 0;
	while ((1<<p)<=a) p++;
	return --p;
}


void rezolv()
{
	int k, i;
	for  ( k = 1; k <= KMAX; k++)
		for ( i = 1; i <= N; i++)
			m[k][i] = m[k-1][m[k-1][i]];
}


int main()
{
	int a, b, i, p;

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

	scanf("%d %d", &N, &M);
	for ( i = 1; i <= N; i++)
		scanf("%d", &m[0][i]);

	rezolv();

	for ( i = 1; i <= M; i++)
	{
		scanf("%d %d", &a, &b);

		while ( b != 0)
		{
			p = putere(b);
			a = m[p][a];
			b -= (1 << p);
		}

		printf("%d\n", a);

	}
	return 0;
}