比赛 |
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;
}