Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 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=temp+given[i];
  9. else
  10. {
  11. temp=given[i];
  12. cnt++;
  13. }
  14. }
  15. if(cnt>m)return false;
  16. return true;
  17. }
  18. int main(){
  19.  
  20. ll i,t,n,j,k,given[100010],c,m,hi,lo,mid,ans,total,lowest;
  21. scanf("%lld",&t);
  22. for(i=1;i<=t;i++){
  23. total=lowest=0;
  24. scanf("%lld %lld",&n,&m);
  25. for(j=0;j<n;j++){
  26. scanf("%lld",&given[j]);
  27. total+=given[i];
  28. if(given[i]>lowest)lowest=given[i];
  29. }
  30. lo=lowest;
  31. hi=total;
  32. while(lo<=hi){
  33. mid=(lo+hi)/2;
  34. if(check(mid,given,n,m)){
  35. ans=mid;
  36. hi=mid-1;
  37.  
  38. }
  39. else{
  40. lo=mid+1;
  41. }
  42. }
  43. printf("Case %lld: %lld\n",i,ans);
  44. }
  45. return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement