错了,怎么办
查看原帖
错了,怎么办
372653
yaozhijiandeyeye楼主2020/11/23 18:08

80分证据:https://www.luogu.com.cn/record/42455350

#include<bits/stdc++.h>
using namespace std;
int n,m,a[100001],l=-0x7fffffff,r=0;
bool check(int k)
{
	int s=0,rgt=0;
	for(int i=0;i<n;i++)
	{
		if(s+a[i]<k)
		{
			s+=a[i];
			continue;
		}
		else
		{
			++rgt;
			s=a[i];
		}
	}
	return rgt>=m;
}
int main()
{
	cin>>n>>m;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
		l=max(l,a[i]);
		r+=a[i];
	}
	while(l<=r)
	{
		int mid=(l+r)>>1;
		if(check(mid))
		{
			l=mid+1;
		}
		else
		{
			r=mid-1;
		}
	}
	cout<<r<<"\n";
}
2020/11/23 18:08
加载中...