Mai intai trebuie sa te autentifici.
Cod sursa(job #201814)
Utilizator | Data | 4 august 2008 10:58:36 | |
---|---|---|---|
Problema | Stramosi | Scor | 0 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 0.88 kb |
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.