比赛 20140418 评测结果 AWWWWWWWWW
题目名称 建造滑雪场 最终得分 10
用户昵称 ◆半城烟沙灬為你打天下 运行时间 0.009 s
代码语言 C++ 内存使用 0.62 MiB
提交时间 2014-04-18 11:19:41
显示代码纯文本
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<iostream>
using namespace std;
int a[200][200],v[200][200];
int n,m;
int l,ans;
void add(int x,int y,int l,int w)
{
	for (int i=x;i<=(x+l-1);i++)
	{
		for (int j=y;j<=(y+l-1);j++)
		{
			v[i][j]=w;
		}
	}
}
bool check(int x)
{
	memset(v,0,sizeof(v));
	for (int i=1;i<=(n-l+1);i++)
	{
		for (int j=1;j<=(m-l+1);j++)
			if (v[i][j]!=a[i][j]) add(i,j,l,a[i][j]);
		for (int j=(m-l+2);j<=m;j++)
			if (v[i][j]!=a[i][j]) return false;
	}
	for (int i=(n-l+2);i<=n;i++)
	{
		for (int j=1;j<=m;j++)
		{
			if (v[i][j]!=a[i][j]) return false;
		}
	}
	return true;
}
int main()
{
	freopen("skicourse.in","r",stdin);
	freopen("skicourse.out","w",stdout);
	scanf("%d%d",&n,&m);
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=m;j++)
		{
			char ch;
			cin >> ch;
			if (ch=='S') a[i][j]=1;
			else a[i][j]=2;
		}
	}
	l=n;
	if (l>m) l=m;
	for (int i=l;i>=1;i--)
	{
		if (check(i)) 
		{
			ans=i;
			break;
		}
	}
	printf("%d",ans);
}