建议加强一下数据范围或强制开不了O2(?)
代码(感谢用户342798):
#include<bits/stdc++.h>
using namespace std;
long long n, m, a[210][210], sum[210][210], ans = INT_MIN;
int main()
{
cin >> n >> m;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
cin >> a[i][j];
sum[i][j] = sum[i][j - 1] + sum[i - 1][j] - sum[i - 1][j - 1] + a[i][j];
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= m; j++)
{
for(int x = i; x <= n; x++)
{
for(int y = j; y <= m; y++)
{
if(sum[x][y] + sum[i - 1][j - 1] - sum[x][j - 1] - sum[i - 1][y] > 0)
{
ans = max(ans, (long long)(x - i + 1) * (y - j + 1));
}
}
}
}
}
cout << ans;
return 0;
}
/*茂骅数据不给力,暴力都过得了*/