find_x(a[], x){
left =0, right = a.length -1;while left <= right
mid =(left + right)/2;if a[mid]== x
return mid;elseif a[mid]< x
left = mid +1;else
right = mid -1;return NOT_FOUND ;}
核心
mid =(left + right)/2;
left = mid +1;
right = mid -1;
二分答案
boolcheck(int x){int now =0, cnt =0;for(int i =0; i < n;++i){if(now + a[i]> x){++cnt;
now = a[i];}else{
now += a[i];}}return cnt <= k;}intcal(int l,int r){while(l < r){int mid =(l+))>>1;if(check(mid)){
r = mid;}else{
l = mid +1;}}return l;}