int
binsearch_min(
int
* arr,
int
lef,
int
rig,
int
key)
{
if
(!arr)
return
-1;
int
left = lef, right = rig;
while
(left < right)
{
int
mid = left + ((right-left)>>1);
if
(arr[mid] < key)
{
left = mid+1;
}
else
{
right = mid;
}
}
if
(arr[left] == key)
return
left;
return
-1;
}
int
binsearch_max(
int
* arr,
int
lef,
int
rig,
int
key)
{
if
(!arr)
return
-1;
int
left = lef, right = rig;
while
(left < right -1)
{
int
mid = left + ((right-left)>>1);
if
(arr[mid] <= key)
{
left = mid;
}
else
{
right = mid;
}
}
if
(arr[right] == key)
{
return
right;
}
else
if
(arr[left] == key)
{
return
left;
}
else
return
-1;
}