Cod sursa(job #977658)

Utilizator Kira96Denis Mita Kira96 Data 26 iulie 2013 12:48:44
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include<fstream>
#define NM 250100
#define LM 22
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int a,b,n,m,D[NM][LM],i,lo[NM],j;
int ans(int k,int x)
{
	if(x>n) return 0;
	while(k)
	{
		x=D[x][lo[k]];
		k-=(1<<lo[k]);
	}
	return x;
}
int main ()
{
	f>>n>>m;
	for(i=1;i<=n;++i)
		f>>D[i][0];
	for(i=2;i<=n;++i)
		lo[i]=lo[(i>>1)]+1;
	for(j=1;(1<<j)<=n;++j)
		for(i=1;i<=n;++i)
			D[i][j]=D[D[i][j-1]][j-1];
	while(m--)
	{
		f>>a>>b;
		g<<ans(b,a)<<"\n";
	}
	return 0;
}