Cod sursa(job #121285)

Utilizator mari_anaMariana Gheorghe mari_ana Data 8 ianuarie 2008 11:18:29
Problema Stramosi Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.95 kb
type matrice=array [0..18,1..250000] of longint;
var a:matrice;
    n,m,i,s,g,q,p,max:longint;
    f1,f2:text;

function exponent(pas:longint):integer;
var k:longint;
begin
k:=0;
while pas>=(1 shl k) do
	k:=k+1;
exponent:=k-1
end;

procedure rec(nr,exp:longint);
begin
repeat
	a[exp,i]:=nr;
	if nr<>0 then
  	nr:=a[exp,nr];
  exp:=exp+1
until exp=max+1;
end;

procedure rec2(nod,x:longint);
var e,k:longint;
begin
k:=0;
repeat
 	x:=x shr k;
  if x and 1<>0 then
  	begin
    e:=k;
	  nod:=a[e,nod];
	  if nod=0 then
		  g:=0
	  else
		  if x=1 then
  		  g:=nod
  	end;
  k:=k+1
until (nod=0) or (x=1);
end;

begin
assign(f1,'stramosi.in');
reset(f1);
readln(f1,n,m);
max:=exponent(n);
for i:=1 to n do
        begin
  read(f1,s);
  rec(s,0)
  end;
assign(f2,'stramosi.out');
rewrite(f2);
for i:=1 to m do
        begin
  readln(f1,q,p);
  g:=0;
  rec2(q,p);
  writeln(f2,g)
  end;
close(f1);
close(f2)
end.