Cod sursa(job #419936)

Utilizator otilia_sOtilia Stretcu otilia_s Data 18 martie 2010 10:55:31
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <fstream>
using namespace std;
#define NMAX 250002
int s[20][NMAX];


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