Cod sursa(job #209258)

Utilizator FllorynMitu Florin Danut Flloryn Data 21 septembrie 2008 16:48:30
Problema Cautare binara Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 1.21 kb
program pascal;
var f,g:text;  st,dr,n,i,m,min,max,mij,x,pos,t:longint;
    v:array[1..100000] of longint;
    ok:boolean;

 procedure florin;
 begin
  st:=1;
  dr:=n;
  ok:=false;
  while (st<=dr) and (not ok) do
   begin
    mij:=(st+dr) div 2;
    if v[mij]=x then begin
                       ok:=true;
                       pos:=mij;
                     end
  else
   if x>v[mij] then st:=mij+1
               else dr:=mij-1;
   end;
 end;

begin
 assign(f,'cautbin.in'); reset(f);
 assign(g,'cautbin.out'); rewrite(g);
 readln(f,n);
 for i:=1 to n do read(f,v[i]);
 readln(f,m);
 for i:=1 to m do
    begin
      readln(f,t,x);
      florin;
      if t=0 then
       begin
        if not ok then writeln(g,-1)
                  else writeln(g,pos);
        end
       else
        if t=1 then
                 begin
                  if not ok then writeln(g,dr)
                            else writeln(g,pos);
                 end
               else
        if t=2 then
                begin
                 if not ok then writeln(g,st)
                           else writeln(g,pos);

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