Cod sursa(job #1442298)

Utilizator valentin50517Vozian Valentin valentin50517 Data 24 mai 2015 22:53:22
Problema Cautare binara Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.57 kb
program cbin;
var a : array[1..100] of longint;
    fi,fo : text;
    n,m,i,tip,val : longint;

function search0(p,u,key : longint) : longint;
var m : longint;
begin
        while p <= u do begin
                          m := (p+u) div 2;
                          if a[m] <= key then p := m+1 else u := m-1;
                        end;
        m := (p+u) div 2;
        if a[m] > key then dec(m);
        if a[m] = key then search0 := m else search0 := -1;
end;

function search1(p,u,key : longint) : longint;
var m : longint;
begin
        while p < u do begin
                          m := (p+u) div 2;
                          if a[m] <= key then p := m+1 else u := m;
                        end;

        m := (p+u) div 2;
        if a[m] > key then dec(m);
        search1 := m;
end;

function search2(p,u,key : longint) : longint;
var m : longint;
begin
        while p < u do begin
                          m := (p+u) div 2;
                          if a[m] <= key then p := m+1 else u := m;
                        end;
        m := (p+u) div 2;
        if a[m] < key then inc(m);
        search2 := m;
end;

begin
assign(fi,'cautbin.in'); reset(fi);
assign(fo,'cautbin.out'); rewrite(fo);

read(fi,n);
for i:=1 to n do read(fi,a[i]);
read(fi,m);
while m > 0 do begin
        read(fi,tip,val);
        if tip = 0 then writeln(search0(1,n,val)) else
        if tip = 1 then writeln(search1(1,n,val)) else
        if tip = 2 then writeln(search2(1,n,val));
        write('zbs');
        dec(m);
        end;
close(fi);
close(fo);
end.