fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. int main() {
  6. int n;
  7. cin >> n;
  8. vector <int> heights;
  9. for(int i = 0; i < n; i++){
  10. int a;
  11. cin >> a;
  12. heights.push_back(a);
  13. }
  14.  
  15.  
  16. int dp[n+1][n+1];
  17. for(int i = 0; i <= n; i++){
  18. for(int j = 0; j <= n; j++){
  19. dp[i][j]=0;
  20. }
  21. }
  22.  
  23. for(int i = 1; i <=n; i++){
  24. for(int j = 1; j <= i; j++){
  25. dp[i][j] = dp[i-1][j];
  26. }
  27. for(int j = i+1; j <= n; j++){
  28. dp[i][j] = max(dp[i][j-1], min(heights[j-1],heights[i-1]) * (j - i));
  29. dp[i][j] = max(dp[i][j], dp[i-1][j]);
  30. }
  31. }
  32.  
  33. for(int i = 0; i <= n; i++){
  34. for(int j = 0; j <= n; j++){
  35. cout << dp[i][j] << " ";
  36. }
  37. cout << endl;
  38. }
  39. cout << dp[n][n];
  40.  
  41. return 0;
  42. }
Success #stdin #stdout 0.01s 5292KB
stdin
9
1 8 6 2 5 4 8 3 7
stdout
0 0 0 0 0 0 0 0 0 0 
0 0 1 2 3 4 5 6 7 8 
0 0 1 6 6 15 16 40 40 49 
0 0 1 6 6 15 16 40 40 49 
0 0 1 6 6 15 16 40 40 49 
0 0 1 6 6 15 16 40 40 49 
0 0 1 6 6 15 16 40 40 49 
0 0 1 6 6 15 16 40 40 49 
0 0 1 6 6 15 16 40 40 49 
0 0 1 6 6 15 16 40 40 49 
49