fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. int maxFloors(int arr[], int n) {
  6. int maxSum = 0;
  7.  
  8. auto maximizeArrayFromPeak = [&](int max_i) {
  9. int Array[n];
  10.  
  11. Array[max_i] = arr[max_i];
  12.  
  13. for (int i = max_i - 1; i >= 0; i--) {
  14. Array[i] = min(Array[i + 1], arr[i]);
  15. }
  16.  
  17. for (int i = max_i + 1; i < n; i++) {
  18. Array[i] = min(Array[i - 1], arr[i]);
  19. }
  20.  
  21. int currentSum = 0;
  22. for (int i = 0; i < n; i++) {
  23. currentSum += Array[i];
  24. }
  25.  
  26. if (currentSum > maxSum) {
  27. maxSum = currentSum;
  28. }
  29. };
  30.  
  31. for (int i = 0; i < n; i++) {
  32. maximizeArrayFromPeak(i);
  33. }
  34.  
  35. return maxSum;
  36. }
  37.  
  38. int main() {
  39. int arr[] = {5, 4, 3, 4, 16};
  40. int n = sizeof(arr) / sizeof(arr[0]);
  41.  
  42. int result = maxFloors(arr, n);
  43. cout << "Maximum number of floors: " << result << endl;
  44.  
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0.01s 5276KB
stdin
Standard input is empty
stdout
Maximum number of floors: 29