Cod sursa(job #1608359)

Utilizator DoubleNyNinicu Cristian DoubleNy Data 22 februarie 2016 00:17:20
Problema Cautare binara Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.54 kb
var n,m,i:longint;
    multime:array[1..100005] of longint;
    r,x,q:longint;
procedure cautarebinara(low,hight:longint; var r:longint);
var mid:longint;
 begin
     if hight-1=low then exit;
     mid:=low+(hight-low) div 2;
     if multime[mid]>x then cautarebinara(low,mid,r)
     else if multime[mid]=x then begin r:=mid; cautarebinara(mid,hight,r) end
          else cautarebinara(mid,hight,r)
 end;
procedure cautarebinar(low,hight:longint; var r:longint);
var mid:longint;
 begin
   if hight-1=low then exit;
     mid:=low+(hight-low) div 2;
     if multime[mid]<x then cautarebinara(low,mid,r)
     else if multime[mid]=x then begin r:=mid; cautarebinara(mid,hight,r) end
          else cautarebinara(mid,hight,r)
 end;
procedure cautarebin(low,hight:longint; var r:longint);
var mid:longint;
 begin
  if hight-1=low then exit;
   mid:=low+(hight-low) div 2;
   if multime[mid]<x then cautarebinara(low,mid,r)
     else if multime[mid]=x then begin r:=mid; cautarebinara(low,mid,r) end
          else cautarebinara(low,mid,r);
 end;


begin
    r:=-1;
    assign(input,'cautbin.in'); reset(input);
    assign(output,'cautbin.out'); rewrite(output);
    readln(input,n);
    for i:=1 to n do read(input,multime[i]);
    readln(input,m);
    for i:=1 to m do
     begin
         readln(input,q,x);
         case q of
         0: cautarebinara(1,n,r);
         1: cautarebinar(1,n,r);
         2: cautarebin(1,n,r);
         end;
      writeln(output,r);
      r:=-1;
     end;
    close(input);
    close(output);

end.