桑沫严
(桑沫严)
1
#include<bits/stdc++.h>
using namespace std;
int n,m,sum;
int a[205][205];
vector<int> h;
int cal(vector<int>& h){
int ans=0;
vector<int> v;
h.insert(h.begin(),0);
h.push_back(0);
for(int i=0;i<h.size();i++){
while(!v.empty()&&h[v.back()]>h[i]){
int cur=v.back();
v.pop_back();
int left=v.back()+1;
int right=i-1;
ans=max(ans,(right-left+1)*h[cur]);
}
v.push_back(i);
}
return ans;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
char c;
cin>>c;
a[i][j]=c-'0';
if(i==1) h.push_back(a[i][j]);
else h[j]=a[i][j]==1?h[j]+1:0;
}
sum=max(sum,cal(h));
printf("%d\n",cal(h));
}
printf("%d",sum);
return 0;
}