Cod sursa(job #847600)

Utilizator RusuAlexeiRusu Alexei RusuAlexei Data 4 ianuarie 2013 11:52:04
Problema Cautare binara Scor 90
Compilator fpc Status done
Runda Arhiva educationala Marime 1.16 kb
program cautare_binara;
  var f1,f2:text;
      n,m,i,x:longint;
      a:array [1..100001] of longint;
      op:byte;
      bufin,bufout:array[1..100000] of byte;
procedure search01;
  var middle,poz,l,r:longint;
  begin
    l:=1;r:=n;
    while l<=r do
      begin
        middle:=(l+r) div 2;
        if a[middle]<=x then l:=middle+1
                        else r:=middle-1;
      end;
    if op=0 then if a[r]=x then writeln(f2,r)
                           else writeln(f2,-1)
            else writeln(f2,r);

  end;
procedure search2;
  var l,r,middle:longint;
  begin
    l:=1;r:=n;
    while l<=r do
      begin
        middle:=(l+r) div 2;
        if a[middle]<x then l:=middle+1
                       else r:=middle-1;

      end;
    writeln(f2,l);
  end;
begin
  assign(f1,'cautbin.in');
  reset(f1);
  assign(f2,'cautbin.out');
  rewrite(f2);
  settextbuf(f1,bufin);
  settextbuf(f2,bufout);
  readln(f1,n);
  for i:=1 to n do read(f1,a[i]);
  readln(f1);
  readln(f1,m);
  for i:=1 to m do
    begin
      readln(f1,op,x);
      if op=2 then search2
              else search01;
    end;
  close(f1);
  close(f2);
end.