| 比赛 | 
    10101115 | 
    评测结果 | 
    WAWAAAAAAA | 
    | 题目名称 | 
    牛宫 | 
    最终得分 | 
    80 | 
    | 用户昵称 | 
    .Xmz | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2010-11-15 11:08:13 | 
显示代码纯文本
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cstdio>
using namespace std;
int n,m,ans;
long long a[201][201];
long long s[201][201];
long long sq(int i,int j,int k,int p)
{
	return s[k][p]-s[i-1][p]-s[k][j-1]+s[i-1][j-1];
}
int main()
{
	freopen("long.in","r",stdin);
	freopen("long.out","w",stdout);
	scanf("%d%d",&n,&m);
	for (int i=1;i<=n;i++)
	for (int j=1;j<=m;j++)
	{
		scanf("%lld",&a[i][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++)
	{
		int t=m;
		for (int k=m;k>=1;k--)
		{
			if (sq(i,k,j,k)>=0)
			{
				int p=t+1;
				for (p=t+1;p<=m;p++)
				{
					if (sq(i,k,j,p)<0) break;
				}
				t=p-1;
				if (ans<(j-i+1)*(t-k+1)) ans=(j-i+1)*(t-k+1);
			}
			else
			{
				int p=t;
				for (p=t;p>=k;p--)
				{
					if (sq(i,k,j,p)>=0) break;
				}
				t=p;
				if (ans<(j-i+1)*(t-k+1)) ans=(j-i+1)*(t-k+1);
			}
		}
	}
	printf("%d\n",ans);
	return 0;
}