// 区间 [l, r] 被划分成 [l, mid] 和 [mid + 1, r] 时使用
int bisearch_1(int l int r)
{
while ( l < r )
{
int mid = l + r >> 1;
if ( check(mid) ) r = mid; // check()判断mid是否满足性质
else l = mid + 1;
}
return l;
}
// 区间 [l, r] 被划分成 [l, mid - 1] 和 [mid, r] 时使用
int bisearch_2(int l, int r)
{
while ( l < r )
{
int mid = l + r + 1 >> 1;
if ( check(mid) ) l = mid;
else r = mid - 1;
}
return l;
}