Pagini recente » Cod sursa (job #62547) | Cod sursa (job #2849913) | Cod sursa (job #1343680) | Cod sursa (job #1782793) | Cod sursa (job #47146)
Cod sursa(job #47146)
var
Osok: array[1..250000,1..19] of longint;
f, g: text;
n, n2, m, i, j, a, b, akt, k: longint;
ketto: array[1..20] of longint;
begin
Assign(f, 'stramosi.in');
Assign(g, 'stramosi.out');
Reset(f);
ReWrite(g);
ReadLn(f, n, m);
ketto[1] := 1;
for i := 2 to 20 do ketto[i] := ketto[i-1] * 2;
n2 := 19;
while (n div ketto[n2]) = 0 do
Dec(n2);
for i := 1 to n do
begin
Read(f, a);
Osok[i,1] := a;
end;
for i := 1 to n do
begin
for j := 1 to n2 do
begin
k := 1;
akt := Osok[i,1];
while (akt <> 0) and (k <> ketto[j]) do
begin
inc(k);
akt := Osok[akt,1];
end;
Osok[i,j] := akt;
end;
end;
for i := 1 to m do
begin
ReadLn(f, a, b);
n := 19;
while (b div ketto[n]) = 0 do
Dec(n);
k := ketto[n];
akt := osok[a,n];
while (k <> b) and (akt <> 0) do
begin
Inc(k);
akt := Osok[akt,1];
end;
WriteLn(g, akt);
end;
Close(f);
Close(g);
end.