单调栈这个概念挺有意思
from collections import deque
def tomaxare(rec):
stack=[]
res=0
for i,n in enumerate(rec):
while stack and rec[i]<=rec[stack[-1]]:
temp=rec[stack.pop()]
if not stack:
l=-1
else:
l=stack[-1]
temp_rea=temp*(i-l-1)
res=max(res,temp_rea)
stack.append(i)
while not stack:
a = stack.pop()
if not stack:
l=-1
else:
l=stack[-1]
res=max(res,(len(rec)-l-1)*a)
return res
def soul(nums):
if not nums:
return 0
l =len(nums[0])
res=0
rec=[0]*l
k =len(nums)
for i in range(k):
for j in range(l):
if nums[i][j]==1:
rec[j]+=1
else:
rec[j]=0
res =max(res,tomaxare(rec))
return res
nums=[]
n,k=map(int ,input().split())
for i in range(n):
temp = list(map(int, input().split()))
nums.append(temp)
resl=soul(nums)
print(resl)