Cod sursa(job #336510)

Utilizator ionutz32Ilie Ionut ionutz32 Data 31 iulie 2009 17:42:30
Problema Stramosi Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.98 kb
var v:array[1..20,1..250000] of longint;
u:array[1..250000] of longint;
n,m,i,r,j,q,p,sol,d,k:longint;
f,g:text;
begin
assign(f,'stramosi.in');
assign(g,'stramosi.out');
reset(f);rewrite(g);
readln(f,n,m);
for i:=1 to n do
    read(f,v[1,i]);
readln(f);
d:=1;
while d<n do
      begin
      d:=d*2;
      r:=r+1;
      end;
for i:=1 to n do
    for j:=2 to r do
        if v[j-1,i]=0 then
           v[j,i]:=0
        else
            v[j,i]:=v[1,v[j-1,i]];
for i:=1 to n do
    begin
    sol:=v[r,i];
    for j:=2 to r do
        if sol<>0 then
           sol:=v[r,sol];
    u[i]:=sol;
    end;
for i:=1 to m do
    begin
    readln(f,q,p);
    sol:=q;
    for k:=1 to p div (r*r) do
        if sol<>0 then
           sol:=u[sol];
    for j:=1 to (p mod (r*r)) div r do
        if sol<>0 then
           sol:=v[r,sol];
    if (sol<>0) and ((p mod (r*r)) mod r<>0) then
       sol:=v[p mod r,sol];
    writeln(g,sol);
    end;
close(f);close(g);
end.