Cod sursa(job #457658)

Utilizator mihai995mihai995 mihai995 Data 20 mai 2010 20:33:47
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
# include <fstream>
using namespace std;

int v[1<<5][1<<18],n,m;

ifstream in("stramosi.in");
ofstream out("stramosi.out");

int stramosi (int p, int q)
{
	int k=0;
	while (1<<k<=p)
		++k;
	--k;
	if (v[k][q]==0)
		return 0;
	if (1<<k==p)
		return v[k][q];
	return stramosi(p-(1<<k),v[k][q]);
}
	
int main ()
{
	int i,j;
	in>>n>>m;
	for(int i=1;i<=n;i++)
		in>>v[0][i];
	for (i=1;i<=18;i++)
		for(j=1;j<=n;j++)
			v[i][j]=v[i-1][v[i-1][j]];
	while(m--)
	{
		in>>j>>i;
		out<<stramosi(i,j)<<"\n";
	}
	return 0;
}