fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define int long long int
  4. #define endl "\n"
  5.  
  6. int solve(int *arr, int n, int time) {
  7. int painters = 1;
  8. int init = arr[0];
  9. for (int i = 1; i < n; i++) {
  10. if (init + arr[i] > time) {
  11. init = arr[i];
  12. painters++;
  13. } else if (init + arr[i] == time) {
  14. init = 0;
  15. painters++;
  16. } else
  17. init += arr[i];
  18. }
  19. return painters;
  20. }
  21.  
  22. int32_t main()
  23. { ios_base::sync_with_stdio(false);
  24. cin.tie(NULL);
  25.  
  26. int K, n;
  27. cin >> K >> n;
  28. int *arr = new int[n];
  29. int mx = INT_MIN, sum = 0;
  30. for (int i = 0; i < n; i++) {
  31. cin >> arr[i];
  32. sum += arr[i];
  33. mx = max(mx, arr[i]);
  34. }
  35.  
  36. //Search space.
  37. int s = mx, e = sum, ans = INT_MAX;
  38. while (s <= e) {
  39. int mid = (s + e) / 2;
  40. int painters = solve(arr, n, mid);
  41.  
  42. if (painters <= K) { //Valid, find min time.
  43. ans = min(mid, ans);
  44. e = mid - 1;
  45. } else
  46. s = mid + 1;
  47. }
  48. cout << ans;
  49. return 0;
  50. }
Success #stdin #stdout 0s 4532KB
stdin
2
2
1 10
stdout
10