比赛 20140714上午练习 评测结果 AAAAAAAA
题目名称 城堡 最终得分 100
用户昵称 ok 运行时间 0.003 s
代码语言 C++ 内存使用 0.30 MiB
提交时间 2014-07-14 10:45:09
显示代码纯文本
#include <fstream>
using namespace std;
char z3;
int z4,z5,m,n,a[51][51]={0},b[51][51]={0},c[2501]={0},u=0,z1=0,z2=0;
int tian(int x,int y,int z)
{
    b[x][y]=z;
    c[z]++;
    if((a[x][y]&1)==0&&b[x][y-1]==0) tian(x,y-1,z);
    if((a[x][y]&2)==0&&b[x-1][y]==0) tian(x-1,y,z);
    if((a[x][y]&4)==0&&b[x][y+1]==0) tian(x,y+1,z);
    if((a[x][y]&8)==0&&b[x+1][y]==0) tian(x+1,y,z);
    return 0;
}
int main()
{
    int i,j;
    ifstream input("castle.in");
    ofstream output("castle.out");
    input>>m>>n;
    for(i=1;i<=n;i++)
    {
		for(j=1;j<=m;j++)
		{
			input>>a[i][j];
		}
    }
    for(i=1;i<=n;i++)
    {
		for(j=1;j<=m;j++)
		{
			if(b[i][j]==0)
			{
				u++;
				tian(i,j,u);
				if(c[u]>z1) z1=c[u];
			}
		}
    }
    output<<u<<endl<<z1<<endl;
    for(j=1;j<=m;j++)
    {
		for(i=n;i>=1;i--)
		{
			if(b[i][j]!=b[i-1][j]&&c[b[i][j]]+c[b[i-1][j]]>z2)
			{
				z2=c[b[i][j]]+c[b[i-1][j]];
				z4=i;
				z5=j;
				z3='N';
			}
			if(b[i][j]!=b[i][j+1]&&c[b[i][j]]+c[b[i][j+1]]>z2)
			{
				z2=c[b[i][j]]+c[b[i][j+1]];
				z4=i;
				z5=j;
				z3='E';
			}
		}
    }
    output<<z2<<endl<<z4<<' '<<z5<<' '<<z3<<endl;
    input.close();
    output.close();
    return 0;
}