Pagini recente » Istoria paginii utilizator/ionut_puiu | Istoria paginii documentatie/pentru-propunatori | Profil unknownliviu | Istoria paginii problema/porcjoc | Cod sursa (job #201814)
Cod sursa(job #201814)
program stramosi_010;
var a:array[0..300000,1..20] of longint;
p:array[1..20] of longint;
n,m:longint;
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)/ln(2));
u:=a[u,p[w]];
v:=v-p[w];
end;
exit(u);
end;
procedure main;
var i,j,r,l,u,v:longint;
begin
assign(input,'stramosi.in'); reset(input);
assign(output,'stramosi.out'); rewrite(output);
readln(n,m); r:=trunc(ln(n)/ln(2));
for i:=1 to n do read(a[i,1]);
for j:=2 to r 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);
writeln(stramos(u,v));
end;
close(output); close(input);
end;
BEGIN
puteri;
main;
END.