N,data = int(input()),(*map(int,input().split()))+(0)
histogram,result = (),0
for i in range(N+1):
j = i
while histogram and histogram(-1)(0)>=data(i):
h,j = histogram.pop()
result = max(result,h*(i-j))
histogram.append((data(i),j))
print(result)
히스토그램에서 가장 큰 직사각형(백준 #6549) 히스토그램에서 가장 큰 직사각형(Python3)(tistory.com)도 똑같은 문제입니다.
데이터에 0을 추가하여 기존 코드에서 사소한 코드 개선이 이루어졌습니다.