1 solutions
-
1
#include<bits/stdc++.h> using namespace std; const int N=100010; int a[N]; int k; int n; bool check(int x) { int ans=1,s=a[0]; for(int i=1;i<n;i++) { if(a[i]+s<=x) { s+=a[i]; } else { ans++; s=a[i]; } } return ans<=k; } int main() { cin>>n>>k; int l=0; for(int i=0;i<n;i++) { cin>>a[i]; l=max(l,a[i]); } int r=1e8; while(l<r) { int mid=(l+r)/2; if(check(mid)) { r=mid; } else l=mid+1; } cout<<l; return 0; }
- 1
Information
- ID
- 951
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 84
- Accepted
- 25
- Uploaded By