比赛 |
20170919普及组 |
评测结果 |
AAAAAAAAAA |
题目名称 |
划分数列 |
最终得分 |
100 |
用户昵称 |
liuyu |
运行时间 |
0.120 s |
代码语言 |
C++ |
内存使用 |
0.70 MiB |
提交时间 |
2017-09-19 19:04:11 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,k,a[100000+10];
long long l,r,m,ans,t,maxn,M;
void init(){
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
}
int main(){
freopen("seqa.in","r",stdin);
freopen("seqa.out","w",stdout);
init();
l=1,r=1e15;maxn=0,M=1e15;
while(l<r){
m=l+(r-l)/2;ans=0;t=0;
int ok=1;maxn=0;
for(int i=1;i<=n;i++){
if(ans+a[i]>m)ans=0,t++;
if(ans+a[i]<=m)ans+=a[i],maxn=max(maxn,ans);
if(t>=k)ok=0;
}
if(ok)r=m,M=min(M,maxn);
else l=m+1;
}
cout<<M;
return 0;
}