Cod sursa(job #523533)

Utilizator mgtestandru Vasile mgtest Data 18 ianuarie 2011 15:15:45
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include<fstream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n,m,v[20][250001],i,j,niv,w=1,x,y;
int main(){
	f>>n>>m;
	for(i=1;i<=n;++i) f>>v[0][i];
	for(niv=1;w;niv++){
		w=0;
		for(i=1;i<=n;i++){
			v[niv][i]=v[niv-1][v[niv-1][i]];
			if(v[niv][i]) w=1;
		}
	}
	
	for(i=1;i<=m;i++)
	{
		f>>x>>y;
		while(x&&y){
			niv=1;
			for(;1<<(niv)<=y && niv<=18;niv++);
			niv--;
			x=v[niv][x];
			y-=(1<<niv);
		}
		g<<x<<'\n';
	}
	g.close();
	return 0;
}