Cod sursa(job #1075848)

Utilizator Mihai_ChihaiMihai Chihai Mihai_Chihai Data 9 ianuarie 2014 17:32:53
Problema Cautare binara Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 1.24 kb
program cautbin;
  var n,m,x,i,r:longint;
      a:array[1..100000] of  longint;

function cb0(x:longint):longint;
var i,j,m:longint;
      u:boolean;
begin
  i:=1;
  j:=n;
  u:=false;
  while (i<=j)  do
    begin
      m:=(i+j) div 2;
      if x>a[m] then i:=m+1
        else if x<a[m] then j:=m-1
          else begin cb0:=m; u:=true; i:=m+1; end;
    end;
  if not u then cb0:=-1;
end;

function cb1(x:longint):longint;
var i,j,m:longint;
      u:boolean;
begin
  i:=1;
  j:=n;
  u:=false;
  while (i<=j)  do
    begin
      m:=(i+j) div 2;
      if x>=a[m] then begin i:=m+1; cb1:=m; end
        else  j:=m-1
    end;
end;

function cb2(x:longint):longint;
var i,j,m:longint;
      u:boolean;
begin
  i:=1;
  j:=n;
  u:=false;
  while (i<=j)  do
    begin
      m:=(i+j) div 2;
      if x<=a[m] then begin j:=m-1; cb2:=m; end
        else  i:=i+1;
    end;
end;

begin
  assign(input,'cautbin.in'); reset(input);
  assign(output,'cautbin.out'); rewrite(output);
  readln(n);
  for i:=1 to n do read(a[i]);
  readln(m);
  for i:=1 to m do
    begin
      readln(r,x);
      case r of
      0:writeln(cb0(x));
      1:writeln(cb1(x));
      2:writeln(cb2(x));
      end;
    end;
  close(output);
end.