fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int MAX_N = 1e5;
  5. int N, T, L, R;
  6. int arr[MAX_N];
  7.  
  8. int check(int W){
  9. int cnt = 1;
  10. int sum = 0;
  11. for(int i = 0; i < N; i++){
  12. if(arr[i] > W){
  13. return T + 1;
  14. }
  15. sum += arr[i];
  16. if(sum > W){
  17. cnt++;
  18. sum = arr[i];
  19. }
  20. }
  21. return cnt;
  22. }
  23.  
  24. int main() {
  25. cin >> N >> T >> L >> R;
  26.  
  27. for(int i = 0; i < N; i++){
  28. cin >> arr[i];
  29. }
  30.  
  31. R;
  32. while(L < R){
  33. int mid = (L + R) / 2;
  34. if(check(mid) > T){
  35. L = mid + 1;
  36. }else{
  37. R = mid;
  38. }
  39. }
  40. if(check(L) > T){
  41. cout << -1 << endl;
  42. }else{
  43. cout << L << endl;
  44. }
  45.  
  46. return 0;
  47. }
Success #stdin #stdout 0.01s 5284KB
stdin
5 2 1 100
60 80 60 70 50
stdout
-1