记录编号 |
454427 |
评测结果 |
AAAAAAAAAA |
题目名称 |
划分数列 |
最终得分 |
100 |
用户昵称 |
我只是个桐迷 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.214 s |
提交时间 |
2017-09-28 21:02:43 |
内存使用 |
0.70 MiB |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,k,a[100010];
long long l,r,m,ans,t,maxn,M;
void init(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>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;
}