Pagini recente » Cod sursa (job #2976608) | Cod sursa (job #82245) | Cod sursa (job #2307793) | Cod sursa (job #348234) | Cod sursa (job #47411)
Cod sursa(job #47411)
var
Osok: array[1..19,1..250000] 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[1,i] := a;
end;
for j := 2 to n2 do
for i := 1 to n do
if Osok[j - 1,i] <> 0 then Osok[j,i] := Osok[j - 1,Osok[j - 1,i]];
for i := 1 to m do
begin
ReadLn(f, a, b);
n := 19;
k := b;
akt := a;
while (k <> 0) and (akt <> 0) do
begin
while (k div ketto[n]) = 0 do Dec(n);
akt := Osok[n,akt];
k := k - ketto[n];
end;
WriteLn(g, akt);
end;
Close(f);
Close(g);
end.