求助大佬:为什么红了5个
查看原帖
求助大佬:为什么红了5个
873786
wangjiajinself楼主2024/3/11 21:02
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
long long l,k,x[N];
int check(long long mid)
{
	int now=0;
	long long sum=0; 
	for(int i=1;i<=l;i++)
	{
		now+=x[i];
		if(now<0) now=0;
		if(now>=mid) now=0,sum++;
	}
	return sum;
}
int main() {
	cin>>l>>k;
	for(int i=1;i<=l;i++) cin>>x[i];
	long long l=1,r=1e15,ans1=1e15+1,ans2=1e15+1;
	long long mid;
	while(l<=r)
	{
		mid=(l+r)/2;
		if(check(mid)<=k)
		{
			r=mid-1;
			if(check(mid)==k) ans1=mid;
		}
		else l=mid+1;
	}
	if(ans1==1e15+1) {
		cout<<"-1";
		return 0;
	}
	l=1,r=1e15;
	while(l<=r)
	{
		mid=(l+r)/2;
		if(check(mid)>=k){
			l=mid+1;
			if(check(mid)==k) ans2=mid;
		}
		else r=mid-1;
	}
	cout<<ans1<<" "<<ans2;
	return 0;
}
2024/3/11 21:02
加载中...