Cod sursa(job #523545)

Utilizator mgtestandru Vasile mgtest Data 18 ianuarie 2011 15:47:12
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 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);
			*/
			niv=1;
			while(y){
					if(y%2==1)
						x=v[niv-1][x];
					niv++;
					y/=2;
			}
		//}
		g<<x<<'\n';
	}
	g.close();
	return 0;
}