PS:此模板只适用于肯定能找到元素的情况。
区间[left,right]划分为[left,mid]和[mid+1,r]时使用
int bsearch_1(int left, int right) {
while (left < right) {
int mid = left + right >> 1;
if (check(mid)) right = mid;
else left = mid + 1;
}
}
区间[left,right]划分为[left,mid-1]和[mid,r]时使用
int bsearch_2(int left, int right) {
while (left < right) {
int mid = left + right + 1 >> 1;
if (check(mid)) left = mid;
else right = mid - 1;
}
return left;
}