P4343 10pts 求助
#include <bits/stdc++.h>
using namespace std;
int L,k,x[114514],sm;
bool check(int m){
int cnt = 0,sum = 0;
for (int i = 1;i <= L;i ++){
sum += x[i];
if (sum < 0) sum = 0;
if (sum >= m) cnt ++,sum = 0;
}
return cnt == k;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> L >> k;
for (int i = 1;i <= L;i ++){
cin >> x[i];
sm += x[i];
}
int l = 1,r = sm,mid,ret1 = -1,ret2 = -1;
while (l <= r){
mid = (l + r) >> 1;
if (check(mid)) ret1 = mid,r = mid - 1;
else l = mid + 1;
}
l = 1,r = sm;
while (l <= r){
mid = (l + r) >> 1;
if (check(mid)) ret2 = mid,l = mid + 1;
else r = mid - 1;
}
cout << ret1 << " " << ret2 << endl;
return 0;
}