比赛 2008haoi模拟训练3 评测结果 AAAATTTTTT
题目名称 位图 最终得分 40
用户昵称 BYVoid 运行时间 0.000 s
代码语言 C 内存使用 0.00 MiB
提交时间 2008-04-24 10:57:54
显示代码纯文本
#include <stdio.h>

FILE *fi,*fo;

long n,m,pcnt;
long pi[33125],pj[33125];

void init()
{
	fi=fopen("bit.in","r");
	fo=fopen("bit.out","w");
	long i,j;
	char c;
	fscanf(fi,"%ld%ld",&n,&m);
	for (i=1;i<=n;i++)
	{
		for (j=1;j<=m;j++)
		{
			c=getc(fi);
			while (c==10 || c==13) c=getc(fi);;
			if (c=='1')
			{
				pcnt++;
				pi[pcnt]=i;
				pj[pcnt]=j;
			}
		}
	}
}

void count()
{
	long i,j,k,d,map;
	for (i=1;i<=n;i++)
	{
		for (j=1;j<=m;j++)
		{
			map=0x7FFFFFFF;
			for (k=1;k<=pcnt;k++)
			{
				long a,b;
				a=i-pi[k]; if (a<0) a=-a;
				b=j-pj[k]; if (b<0) b=-b;
				d=a+b;
				if (d<map)
					map=d;
			}
			fprintf(fo,"%ld ",map);
		}
		fputc('\n',fo);
	}
}

void print()
{
	fclose(fi);
	fclose(fo);
}

int main()
{
	init();
	count();
	print();
	return 0;
}