比赛 20170919普及组 评测结果 AAAAAAAAAA
题目名称 划分数列 最终得分 100
用户昵称 REALIZE_BEYOND 运行时间 0.093 s
代码语言 C++ 内存使用 1.08 MiB
提交时间 2017-09-19 14:33:07
显示代码纯文本
#include<iostream>
#include<cstdio>

using namespace std;
long long num[100005],r=0,l=1000000000,mid,t1,t2;
int main(){
	freopen("seqa.in","r",stdin);
	freopen("seqa.out","w",stdout);
	ios::sync_with_stdio(false);
	int n,k;
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>num[i];
		r+=num[i];
		l=min(l,num[i]);
	}
//	cout<<l<<" "<<r<<"\n";
	while(l!=r){
		mid=(l+r)>>1;
		t1=0;t2=1;
		for(int i=1;i<=n;i++){
			t1+=num[i];
			if(t1==mid){
				t2++;
				t1=0;
			}
			else if(t1>mid){
				t2++;
				t1=num[i];
			}
//			cout<<t1<<" ";
		}
		if(t1==0) t2--;
//		cout<<"\n";
//		cout<<mid<<" "<<t2<<"\n";
		if(t2<=k) r=mid;
		else l=mid+1;
	}  
	cout<<l;
	return 0;
}