P4343 35pts求助
  • 板块学术版
  • 楼主WD2c0mP
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/1/2 14:57
  • 上次更新2023/10/24 05:49:19
查看原帖
P4343 35pts求助
780641
WD2c0mP楼主2023/1/2 14:57

P4343 35pts求助

#include <bits/stdc++.h>
using namespace std;
int L,k,x[114514],sm;
bool check(long long 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];
	}
	long long 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;
	}
	if (ret1 == -1 || ret2 == -1) cout << -1 << endl;
	else cout << ret1 << " " << ret2 << endl;
	return 0;
}
2023/1/2 14:57
加载中...