Cod sursa(job #495106)

Utilizator space.foldingAdrian Soucup space.folding Data 23 octombrie 2010 23:55:46
Problema Stramosi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include <cstdio>

int nodes[30][250001];

int main ()
{	
	FILE *in=fopen("stramosi.in", "r"), *out=fopen("stramosi.out", "w");
	int n, m, s1, s2;
	fscanf(in, "%d%d", &n, &m);
	for(int i=0; i<n; ++i)
		fscanf(in, "%d", &nodes[0][i+1]);

	for(int i=1; i<=30; ++i)
		for(int j=1; j<=n; ++j)
			nodes[i][j]=nodes[i-1][nodes[i-1][j]];

	for(int i=0; i<m; ++i)
	{
		fscanf(in, "%d%d", &s1, &s2);
		int t=0;
		while(s2)
		{
			if(s2%2)
				s1=nodes[t][s1];				
			s2/=2;
			t++;
		}
		fprintf(out, "%d\n", s1);
	}
	return 0;
}