比赛 皇后 评测结果 RRRRRRRRRR
题目名称 划分数列 最终得分 0
用户昵称 FFF团 运行时间 0.001 s
代码语言 C++ 内存使用 0.70 MiB
提交时间 2017-03-19 20:56:24
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
int n,k,ud,ld,mid,a[100000+10];
bool C(int d){
	int last=0;
	int cur;
	for(int i=1;i<k;i++){
		cur=n;
		while(cur<n&&a[cur]-a[last]>d){
			cur--;
		}
		if(cur==n)return 0;
		last=cur;
	}
	if(a[n]-a[cur]>d)return 0;
	else return 1;
}//5 2
//0 2 1 3 4 5
//0 2 3 6 10 15
int main(){
	//freopen("seqa.in","r",stdin);
	//freopen("seqa.out","w",stdout);
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		a[i]=a[i]+a[i-1];
	};
	ld=0;
	ud=a[n];
	while(ud-ld>1){
		mid=(ld+ud)/2;
		if(C(mid)) ud=mid;
		else ld=mid;
	}
	cout<<ud;
	//fclose(stdin);
	//fclose(stdout);
	return 0;
}