Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.28 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long int
  4. bool check(ll capacity,ll given[],ll n,ll m){
  5. ll i,j,k,l;
  6. ll temp=0,cnt=1;
  7. for(i=0;i<n;i++){
  8. if(temp+given[i]<=capacity)temp+=given[i];
  9. else
  10. {
  11. temp=given[i];
  12. cnt++;
  13. }
  14.  
  15. }
  16. if(cnt>m)return false;
  17. return true;
  18.  
  19. }
  20. int main(){
  21.  
  22. ll i,t,n,j,k,given[100010],c,m,hi,lo,mid,ans,total,lowest;
  23. scanf("%lld",&t);
  24. for(i=1;i<=t;i++){
  25. total=lowest=0;
  26.  
  27. scanf("%lld %lld",&n,&m);
  28. for(j=0;j<n;j++){
  29. scanf("%lld",&given[j]);
  30. total+=given[j];
  31. if(given[j]>lowest)lowest=given[j];
  32.  
  33. }
  34. lo=lowest;
  35. hi=total;
  36. while(lo<=hi){
  37. mid=(lo+hi)/2;
  38. if(check(mid,given,n,m)){
  39. ans=mid;
  40. hi=mid-1;
  41.  
  42. }
  43. else{
  44. lo=mid+1;
  45. }
  46.  
  47.  
  48. }
  49. printf("Case %lld: %lld\n",i,ans);
  50.  
  51. }
  52.  
  53.  
  54.  
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement