Cod sursa(job #766013)

Utilizator silviu982001Borsan Silviu silviu982001 Data 10 iulie 2012 00:20:18
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <cstdio>
int nodes[31][250001];
int main ()
{	
	FILE *in=fopen("stramosi.in", "r"); 
	FILE *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;
}