Cod sursa(job #1172396)

Utilizator Alex1199Alex Bercea Alex1199 Data 17 aprilie 2014 14:19:19
Problema Cautare binara Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.48 kb
var f, g : text;
    i, j, d : integer;
    n, m, k, h,ans : integer;
    a : array[1..100] of longint;
    Procedure Cauta(st,dr:integer);
       Begin
       if st<=dr then
        begin
          if A[(st+dr) div 2 ]= h then
          begin
                   ans:=(st+dr) div 2;
                     Cauta(((st+dr) div 2)+1,dr);
          end
              else
            if A[(st+dr) div 2 ]> h then
                              Cauta(1,((st+dr) div 2)-1)
                                   else
                                   Cauta(((st+dr) div 2)+1, dr)

        end;
      end;
 begin
   Assign(f,'cautbin.in');
    reset(f);
    Assign(g,'cautbin.out');
    Rewrite(g);
     Readln(f,n);
      For d:=1 to n do
       Read(f,A[d]);

     Readln(f);
    Readln(f,m);
     For j:=1 to m do
     begin
        Readln(f, k, h);
   Ans:=-1;
   Cauta(1,n);

     case k of
    0 :   Writeln(g,ans);
    2 : begin   if ans=-1 then
          Writeln(g,1)
           ELSE
           begin
             i:=ans;
             while a[i-1]=h do
                 dec(i);
                 Writeln(g,i);
           end;
         end;
     1: begin
            if ans=-1 then
          Writeln(g,n)
           ELSE
            begin
             Writeln(g,ans);
             i:=ans;
             while a[i-1]=h do
                 dec(i);
                 Writeln(i);

            end;
       end;
      end;
     end;  close(f);
     close(g);
  end.