SuitNdtie

Bpartition

May 1st, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.65 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int main()
  4. {
  5.     int n,k;
  6.     scanf("%d %d",&n,&k);
  7.     int arr[n];
  8.     int maxsum = 0;
  9.     for(int i = 0 ; i < n ; i ++){
  10.         scanf("%d",&arr[i]);
  11.         maxsum += arr[i];
  12.     }
  13.     int l = 0 , r = maxsum;
  14.     int ans = 1e9+1;
  15.     while(l <= r){
  16.         int m = (l+r)/2;
  17.         int totalroom = 1;
  18.         int sumnow = 0;
  19.         int tempmax = 0;
  20.         for(int i = 0 ; i < n ; i ++){
  21.             if(sumnow+arr[i] <= m)sumnow+=arr[i];
  22.             else{
  23.                 sumnow = arr[i];
  24.                 totalroom ++;
  25.             }
  26.             if(sumnow > tempmax)tempmax = sumnow;
  27.         }
  28.         if(totalroom <= k){
  29.             if(tempmax < ans){
  30.                 ans = tempmax;
  31.             }
  32.             r = m - 1;
  33.         }else{
  34.             l = m + 1;
  35.         }
  36.     }
  37.     printf("%d",ans);
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment