比赛 20101116 评测结果 WWWWWWWWWW
题目名称 剪切矩形 最终得分 0
用户昵称 kaaala 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2010-11-16 10:10:10
显示代码纯文本
#include<fstream>

using namespace std;

char s;
int i,j,n,m,z,a[1001],b[1001],x;
bool f1[1002][1002];
long mx;

int main()
{
	ifstream fin("rectangle.in");
	ofstream fout("rectangle.out");
	fin>>n>>m;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			fin>>s;
			if(s=='.')
				f1[i][j]=true;
			else
				f1[i][j]=false;
		}
		z=0;
		x=0;
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
		{
			if(f1[i][j])
				z++;
			else
			{
				a[i]+=(1+z)*z/2;
				z=0;
			}
			if(j==m)
			{
				a[i]+=(1+z)*z/2;
				z=0;
			}
			if((f1[i][j]&&f1[i+1][j])||(f1[i][j]&&f1[i-1][j]))
				x++;
		}
		z=0;
	for(j=1;j<=m;j++)
		for(i=1;i<=n;i++)
		{
			if(f1[i][j])
				z++;
			else
			{
				b[j]+=(1+z)*z/2;
				if(z==1)
					x++;
				z=0;
			}
			if(i==n)
			{
				b[j]+=(1+z)*z/2;
				if(z==1)
					x++;
				z=0;
			}
		}
	for(i=1;i<=n;i++)
		mx+=a[i];
	for(i=1;i<=m;i++)
		mx+=b[i];
	mx-=x;
	fout<<mx;
	fin.close();
	fout.close();
	return 0;
}