Cod sursa(job #30061)

Utilizator damaDamaschin Mihai dama Data 12 martie 2007 17:47:43
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <stdio.h>

int mat[19][250000];

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

	int i, j, temp, cnt, n, m, p, q;

	scanf("%d%d", &n, &m);

	for(i = 1; i <= n; ++i)
	{
		scanf("%d", &mat[0][i]);
	}

	for(j = 1; j <= 18; ++j)
	{
		for(i = 1; i <= n; ++i)
		{
			mat[j][i] = mat[j - 1][mat[j - 1][i]];
		}
	}
	
	for(i = 1; i <= m; ++i)
	{
		scanf("%d%d", &q, &p);
		temp = 1 << 18;
		cnt = 18;
		while(temp)
		{
			if(temp & p)
			{
				q = mat[cnt][q];
			}
			temp >>= 1;
			--cnt;
		}
		printf("%d\n", q);
	}

	return 0;
}