Cod sursa(job #469787)

Utilizator S7012MYPetru Trimbitas S7012MY Data 8 iulie 2010 23:18:56
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <cstdio>
#define DN 250005

int mat[20][DN],n,m;
void construire() {
    for (int i=1;1<<i<=n;i++)
        for (int j=1;j<=n;j++)
            mat[i][j]=mat[i-1][mat[i-1][j]];
}

void stramos(int p, int q) {
	int s=p,i=31;
	while(i--)  {
		if (q&(1<<i))
			s=mat[i][s];
	}
	printf("%d\n",s);
}

int main()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	int x,y,i;
	scanf("%d %d",&n,&m );
	for(i=1; i<=n; i++) scanf("%d",&mat[0][i] );
	construire();
	for(scanf("%d %d",&x,&y );m--; stramos(x,y),scanf("%d %d",&x,&y ));
	return 0;
}