program dichotomique ;
uses wincrt ;
type
   tab = array [1..20] of integer ;
var
   t : tab ;
   n,e : integer ;
   x : boolean ;
 
procedure saisie ( var n,e : integer ;var t :tab);
var
   i : integer ;
begin
 repeat
  writeln('Saisir la taille du tableau :');
  readln(n);
 until n in [5..20];
  for i:= 1 to n do
   begin
    repeat
     writeln('Saisir l''élement ',i);
     readln(t[i]);
    until t[i] > 0 ;
   end;
    writeln('saisir un entier :');
    readln(e);
end;
 
function existe (n,e : integer ; t :tab) : boolean ;
var
   i,bi,bs : integer ;
   x : boolean ;
begin
 x:=false ;
 bi:=1 ;
 bs:=n ;
  repeat n:=(bi+bs) div 2 ;
   if t[n] = e then
    x:=true
     else if t[n] < e then
      bi:=n+1 
       else bs:=n-1 ;
  until (x=true) or (bi >= bs) ;
end;
 
begin
 saisie(n,e,t);
 x:=existe(n,e,t);
 if x=true then writeln(e,' existe dans le tableau') else if x=false then 
 writeln(e,' n''existe pas dans le tableau'); 
end.