80分数列分段

#include <bits/stdc++.h>
#define for(i,l,r) for(int i=l;i<=r;i++)
#define inf 10000001
using namespace std;
long long n,m,ans,l,tt,r,sum,now,mid,a[inf];
bool check(int x){
 sum=0;
 tt=0;
 for(i,1,n){
 if(a[i]+tt>x) {
  sum++;
  tt=a[i];
 }
 else  {
 tt+=a[i];//注意
 }
}
 return sum>=m;
}
 int main(){
 cin>>n>>m;
  for(i,1,n){
   cin>>a[i];
   r+=a[i];
   l=max(l,a[i]);
   }
 while(l<=r){
   mid=(l+r)>>1;
  if(check(mid)){
   ans=mid;
  l=mid+1;//想清楚
 }
  else   r=mid-1;
}
cout<<l;//为什么不是ans
 return 0;
}
posted @ 2019-01-31 13:49  spytc  阅读(209)  评论(0编辑  收藏  举报