Cod sursa(job #514836)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 19 decembrie 2010 18:01:03
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>

FILE*f=fopen("stramosi.in","r");
FILE*g=fopen("stramosi.out","w");

int S[20][251000],i,j,p,lg,N,Q,q;

int main () {
	
	fscanf(f,"%d %d",&N,&Q);
	for ( i = 1 ; i <= N ; ++i )
		fscanf(f,"%d",&S[0][i]);
	for ( p = 1 ; p <= N ; p *= 2 , ++lg ) {};
	
	for ( i = 1 ; i <= lg ; ++i ){
		for ( j = 1 ; j <= N ; ++j )
			S[i][j] = S[i-1][S[i-1][j]];
	}
	
	while ( Q-- ){
		fscanf(f,"%d %d",&q,&p);
		i = 0;
		while ( p ){
			if ( p % 2 )
				q = S[i][q];
			p /= 2;
			++i;
		}
		fprintf(g,"%d\n",q);
	}
	
	fclose(f);
	fclose(g);
	
	return 0;
}