{двоичный поиск
в случае нескольких равных элементов поиск выдает наименьший номер
в случае отсутствия - номер первого элемента, превышающего искомый}
const
maxn = 100000;
Type
DataType = extended;
var
i,n:longint;
buf,X:DataType;
a:array[1..maxn]of DataType;
function BinarySearch(x:dataType):longint;
var
l,r,m:longint;
begin
l:=1; r:=n;
while r>l do begin
m:=(r+l) div 2;
if a[m]<x then l:=m+1 else r:=m;
end;
BinarySearch:=l;
end;