fork download
  1. //max area in a histogram
  2.  
  3. import java.io.*;
  4. import java.util.*;
  5.  
  6. class Main {
  7. public static void main(String[] args)throws IOException {
  8. int n=Integer.parseInt(br.readLine());
  9. int[] arr=new int[n];
  10. for(int i=0;i<n;i++){
  11. arr[i]=Integer.parseInt(br.readLine());
  12. }
  13. int max=0;
  14. Stack<Integer> st=new Stack<>();
  15. st.push(-1);
  16. for(int i=0;i<n;i++){
  17. while(st.peek()!=-1&&arr[i]<=arr[st.peek()]){
  18. int dist=i-st.peek();
  19. int h=arr[st.peek()];
  20. max=Math.max(max,dist*h);
  21. st.pop();
  22. }
  23. st.push(i);
  24. }
  25. while(st.peek()!=-1){
  26. int dist=arr.length-st.peek();
  27. int h=arr[st.peek()];
  28. max=Math.max(max,dist*h);
  29. st.pop();
  30. }
  31. System.out.println(max);
  32. return;
  33. }
  34. }
Success #stdin #stdout 0.09s 54996KB
stdin
6
2
1
5
6
2
3
stdout
10