| 比赛 | 
    10101115 | 
    评测结果 | 
    WWWWWWWWWW | 
    | 题目名称 | 
    牛宫 | 
    最终得分 | 
    0 | 
    | 用户昵称 | 
    Pom | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2010-11-15 09:30:01 | 
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
using namespace std;
const int MAXN=220;
int n,m,i,j,k,a[MAXN][MAXN],map[MAXN][MAXN],ans,x,y;
inline int cal(int i,int j,int x,int y)
{
	return (a[x][y]-a[i-1][y]-a[x][j-1]+a[i-1][j-1]);
}
void init()
{
	freopen("long.in","r",stdin);
	freopen("long.out","w",stdout);
	scanf("%d%d",&n,&m);
	memset(a,0,sizeof(a));
	for (i=1;i<=n;i++)
		for (j=1;j<=n;j++)
		{
			scanf("%d",&map[i][j]);
			a[i][j]=a[i-1][j]+a[i][j-1]+map[i][j]-a[i-1][j-1];
		}
}
void solve()
{
	for (i=1;i<=n;i++)
		for (j=1;j<=m;j++)
			for (k=1;k<=min(n-i+1,m-j+1);k++)
				if (cal(i,j,i+k-1,j+k-1)>0) 
					if (k>ans) ans=k;
	printf("%d\n",ans*ans);
}
int main()
{
	init();
	solve();
	return 0;
}