Pagini recente » Cod sursa (job #2392382) | Cod sursa (job #1554465) | Cod sursa (job #2504568) | Cod sursa (job #2102215) | Cod sursa (job #592208)
Cod sursa(job #592208)
var a:array[1..100000,0..20] of longint;
b:array[1..1000000000] of char;
n,m,i,j,t,u,v,p,k:longint;
s:string;
f,g:text;
begin
assign(f,'lca.in');
assign(g,'lca.out');
reset(f);
rewrite(g);
settextbuf(f,b);
settextbuf(g,b);
readln(f,n,m);
a[1,0]:=0;
i:=2;
while not eoln(f) do
begin
read(f,s);
for j:=1 to length(s) do
if s[j]=' ' then inc(i) else a[i,0]:=a[i,0]*10 +ord(s[j]) -ord('0');
end;
for i:=1 to m do
begin
readln(f,u,v);
while u<>v do
if u>v then u:=a[u,0] else v:=a[v,0];
writeln(g,v);
end;
{for i:=n downto 2 do
begin
p:=a[i,0];
j:=1;
k:=1;
while p>0 do
begin
if j=1 shl (k-1) then
begin
a[i,k]:=p;
inc(k);
end;
inc(j);
p:=a[p,0];
end;
end;
for i:=1 to m do
begin
readln(f,u,v);
while u<>v do
begin
if v>u then
begin
p:=1;
while a[v,p+1]>=u do inc(p);
v:=a[v,p];
end else
begin
p:=1;
while a[u,p+1]>=v do inc(p);
u:=a[u,p];
end;
end;
writeln(g,u);
end;}
close(g);
end.