Cod sursa(job #201826)

Utilizator cypherMircea Grecu cypher Data 4 august 2008 11:39:03
Problema Stramosi Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.99 kb
program stramosi_010;
var a:array[0..300000,0..22] of longint;
	p:array[0..22] of longint;
	n,m:longint; l2:real;
	
	procedure puteri;
	var i:byte; x:longint;
	begin
		x:=1;
		for i:=0 to 20 do begin
			p[i]:=x;
			x:=x shl 1;
		end;
	end;
	
	{function stramos(u,v:longint):longint;
	var w:longint;
	begin
		while v>0 do begin
			w:=trunc(ln(v)/l2);
			u:=a[u,w];
			v:=v-p[w];
		end;
		exit(u);
	end;}
	
	procedure main;
	var i,j,r,l,u,v,w:longint;
	begin
		assign(input,'stramosi.in'); reset(input);
		assign(output,'stramosi.out'); rewrite(output);
		readln(n,m); r:=trunc(ln(n)/l2); 
		for i:=1 to n do read(a[i,0]);
		for j:=1 to r+1 do begin
			for i:=1 to n do begin
				a[i,j]:=a[a[i,j-1],j-1];
			end;
		end;
		for l:=1 to m do begin
			readln(u,v);
			w:=0;
			while v>0 do begin
				if v mod 2=1 then u:=a[u,w];
				inc(w);
				v:=v shr 1;
			end;
			writeln(u);
		end;
		close(output); close(input);
	end;
	
BEGIN
	l2:=ln(2);
	puteri;
	main;
END.