3 solutions

  • 1
    @ 2025-9-22 16:47:58

    #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; }

    Information

    ID
    951
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    (None)
    # Submissions
    92
    Accepted
    27
    Uploaded By