Cod sursa(job #446789)

Utilizator loginLogin Iustin Anca login Data 26 aprilie 2010 18:23:32
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
# include <fstream>
# include <iostream>
using namespace std;
int a[30][250003], n, m;
void calcul ()
{
	int p=1;
	for (int k=1;2*p<=n;++k, p*=2)
		for(int i=1;i<=n;i++)
			a[k][i]=a[k-1][a[k-1][i]];
}

int stramosi (int p, int q)
{
	int k=1, e=0;
	while (2*k<=p)k*=2, ++e;
	if (a[e][q]==0)return 0;
	if (k==p)return a[e][q];
	return stramosi(p-k, a[e][q]);
}
	
			
int main ()
{
	ifstream fin ("stramosi.in");
	ofstream fout ("stramosi.out");
	fin>>n>>m;
	for(int i=1;i<=n;i++)
		fin>>a[0][i];
	calcul();
	int p, q;
	for(;m--;)
	{
		fin>>q>>p;
		fout<<stramosi(p, q)<<"\n";
	}
	return 0;
}