Guest User

Untitled

a guest
Jun 20th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define ll long long int
  3. using namespace std;
  4.  
  5. ll maxPage(ll *P, const int &n)
  6. {
  7. ll maxi = -1;
  8. for(int i = 0; i < n; i++)
  9. {
  10. if(P[i] > maxi)
  11. {
  12. maxi = P[i];
  13. }
  14. }
  15. return maxi;
  16. }
  17.  
  18. ll sumPages(ll *P, const int &n)
  19. {
  20. ll sum = 0;
  21. for(int i = 0; i <n; i++)
  22. sum += P[i];
  23. return sum;
  24. }
  25.  
  26. int numParts(ll *P, const int &n, ll maxSize)
  27. {
  28. int k = 1;
  29. ll sum = 0;
  30. for(int i = 0; i < n; i++)
  31. {
  32. sum += P[i];
  33. if(sum > maxSize)
  34. {
  35. k++;
  36. sum = P[i];
  37. }
  38. }
  39. return k;
  40. }
  41.  
  42. ll bin_part(ll *P, const int &n, const int &m)
  43. {
  44. int k;
  45. ll low = maxPage(P, n);
  46. ll high = sumPages(P, n);
  47. ll mid;
  48. while(low < high)
  49. {
  50. mid = low + (high - low)/2;
  51. k = numParts(P, n, mid);
  52. if(k <= m)
  53. {
  54. high = mid;
  55. }
  56. else
  57. {
  58. low = mid + 1;
  59. }
  60. }
  61. return low;
  62. }
  63.  
  64. int main()
  65. {
  66. int n, m;
  67. cin>>n;
  68. ll P[n];
  69. for(int i = 0; i < n; i++)
  70. cin>>P[i];
  71. cin>>m;
  72. ll ans = bin_part(P, n, m);
  73. cout<<ans<<endl;
  74. return 0;
  75. }
Add Comment
Please, Sign In to add comment