Cod sursa(job #47438)

Utilizator QbyxEros Lorand Qbyx Data 3 aprilie 2007 18:14:22
Problema Stramosi Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.11 kb
var
  Osok: array[1..19,1..250000] of longint;
  van: array[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 van[i] := i;

  for i := 1 to n do
    begin
      Read(f, a);
      Osok[1,i] := a;
    end;

  for j := 2 to 19 do
  for i := 1 to n do
    if Osok[j - 1,i] <> 0 then Osok[j,i] := Osok[j - 1, Osok[j - 1,i]]
    else
      begin
         Dec(n);
        for k := i - 1 to n + 1 do van[k] := van[k + 1];
      end;

  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.