提交时间:2024-01-25 09:31:02

运行 ID: 127563

#include<bits/stdc++.h> using namespace std; int n; int m; int a[100010]; long long l; long long r; long long sum; long long mid; int Max; bool check() { int num=0; int ans=0; for(int i=1;i<=n;i++) { num+=a[i]; if(num>mid) { ans++; num=a[i]; } else if(num==mid) { num=0; ans++; } } if(num!=0) { ans++; } return ans<=m; } int main() { cin>>n; cin>>m; for(int i=1;i<=n;i++) { cin>>a[i]; sum+=a[i]; Max=max(Max,a[i]); } if(m==n) { cout<<Max; return 0; } l=1; r=sum; while(l<r) { mid=(l+r)>>1; if(check()==1) { r=mid; } else { l=mid+1; } } cout<<l; return 0; }