Cod sursa(job #476836)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 12 august 2010 14:17:50
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <stdio.h>
#define Nmax 250002
#define CT 19

int Str[CT][Nmax];
int n,m;

int main(){
	int i,j,q,p;
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;++i) scanf("%d",&Str[0][i]);
	
	for(i=1;i<CT;++i)
		for(j=1;j<=n;++j)
			Str[i][j]=Str[i-1][Str[i-1][j]];
	
	for(; m; --m){
		scanf("%d%d",&q,&p);
		
		while( p ){
			i=0;
			
			while( (1<<i) <= p ) ++i;
			--i;
			
			p -= (1<<i);
			q=Str[i][q];
		}
		
		printf("%d\n",q);
	}
	
	fclose(stdin); fclose(stdout);
	return 0;
}