Cod sursa(job #192933)

Utilizator alexeiIacob Radu alexei Data 1 iunie 2008 14:25:34
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>
#include<vector>
#define nmax 250024
#define nmare 300024
#define baza 20
using namespace std;

int a[24][nmax];

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

	int N,M;
	scanf("%d%d",&N,&M);
	
	int i,aux,aux1,aux2,k,j;
	
	for(i=1; i<=N; ++i)
		scanf("%d",&a[0][i]);
	
	for(j=1; j<=baza; ++j){
		for(i=1; i<=N; ++i){
			a[j][i]=a[ j-1 ][ a[j-1][i] ];
			//printf("%d ",a[j][i]);
		}
	//printf("\n");
	}
	int nr;
	
	for(i=1; i<=M; ++i){
		scanf("%d%d",&aux1,&aux2);
		//aux1 - fiul
		//aux2 - nr stramos
		
		//nr=a[0][aux1];
		nr=aux1;
		
		for(j=0; aux2!=0; ++j,aux2/=2)
			if( aux2%2 )
			nr=a[j][nr];
			
		printf("%d\n",nr);
	}
	
	
	return 0;
}