75分求助
查看原帖
75分求助
551966
jeffrey楼主2023/8/4 20:45
#include<bits/stdc++.h>
#define lnt long long
using namespace std;
int n,k;
int l,r;
const int N=2e5+10;
int a[N];
int check(int x)
{
	int cnt=0,sum=0;
	for(int i=1;i<=n;i++)
	{
		sum+=a[i];
		if(sum<0) sum=0;
		if(sum>=x)
		{
			sum=0;
			cnt++;
		}
		
	}
	//if(sum>=x) cnt++;
	return cnt;
}
signed main()
{
	l=1,r=1e18;
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];
	int ans=-1;
	while(l<=r)
	{
		int mid=l+(r-l)/2;
		int t=check(mid);
		if(t==k)
		{
			r=mid-1;
			ans=mid;
		}
		else if(t<k)
		{
			r=mid-1;
		}
		else
		{
			l=mid+1;
		}
	}
	if(ans==-1)
	{
		cout<<-1;
		return 0;
	}
	cout<<ans<<" ";
	ans=0;
	l=1;r=1e18;
	while(l<=r)
	{
		int mid=l+(r-l)/2;
		int t=check(mid);
		if(t==k)
		{
			l=mid+1;
			ans=mid;
		}
		else if(t<k)
		{
			r=mid-1;
		}
		else
		{
			l=mid+1;
		}
	}
	cout<<ans;
	return 0;
}
2023/8/4 20:45
加载中...