Cod sursa(job #47169)

Utilizator QbyxEros Lorand Qbyx Data 3 aprilie 2007 13:21:48
Problema Stramosi Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.16 kb
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;

procedure Keres(a, b: longint);
begin
  n := 19;
  while (b div ketto[n]) = 0 do
    Dec(n);
  k := ketto[n];
  akt := osok[n,a];
  if (k <> b) and (akt <> 0) then
    begin
      Keres(akt, b - k);
      Inc(k);
    end;
end;


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 i := 1 to n do
    begin
      for j := 1 to n2 do
        begin
          k := 1;
          akt := Osok[1,i];
          while (akt <> 0) and (k <> ketto[j]) do
            begin
              inc(k);
              akt := Osok[1,akt];
            end;
          Osok[j,i] := akt;
        end;
    end;}

  for i := 1 to m do
    begin
      ReadLn(f, a, b);
      Keres(a, b);
      Writeln(g, akt);
    end;
  Close(f);
  Close(g);
end.