rt,我的提交记录
#include<bits/stdc++.h>
using namespace std;
long long s[205][205],a[205][205],ans;
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
for(int k=1;k<=m;k++){
long long head=k,tail=m,mid,sum=0;
while(head<tail){
mid=(head+tail+1)/2;
long long sum2=s[j][mid]-s[i-1][mid]-s[j][k-1]+s[i-1][k-1];
if(sum2>=0){
if((j-i+1)*(mid-k+1)>sum) sum=(j-i+1)*(mid-k+1);
head=mid+1;
}
else tail=mid-1;
}
long long sum2=s[j][m]-s[i-1][k]-s[j][k-1]+s[i-1][k-1];
if(sum2>=0){
if((j-i+1)*(m-k+1)>sum) sum=(j-i+1)*(m-k+1);
}
ans=max(ans,sum);
}
}
}
cout<<ans;
return 0;
}```