Cod sursa(job #165421)

Utilizator bogdan005Aldescu Bogdan bogdan005 Data 25 martie 2008 22:35:15
Problema Stramosi Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.04 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;

    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 j := 2 to n2 do
       for i := 1 to n do
         if Osok[j - 1,i] <> 0 then Osok[j,i] := Osok[j - 1,Osok[j - 1,i]];

     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.