Cod sursa(job #494537)

Utilizator lianaliana tucar liana Data 21 octombrie 2010 21:28:46
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
int n, m, p, ii, jj, a[505][505];

void atribuire(int lin1, int col1, int lin2, int col2)
{
	int i, j;
	for (i=lin1;i<=lin2;i++)
		for (j=col1;j<=col2;j++)
			a[i][j]=p;
}
void completare(int l1, int c1, int l2, int c2)
{
	int i, p2, k;
	k=l2-l1+1;
	if (k>c2-c1+1)
		k=c2-c1+1;
	p2=1;
	for (i=1;p2<=k;i++)
		p2=p2*2;
	p2=p2/2;
	atribuire(l1,c1,l1+p2-1,c1+p2-1);
	if (c2>=c1+p2)
	{
		p=p+1;
		completare(l1,c1+p2,l2,c2);
	}
	if (l2>=l1+p2)
	{
		p=p+1;
		completare(l1+p2,c1,l2,c1+p2-1);
	}
		
}
int main()
{
	freopen("piese.in","r",stdin);
	freopen("piese.out","w",stdout);
	scanf("%d %d", &n, &m);
	p=1;
	completare(1,1,n,m);
	printf("%d\n",p);
	for (ii=1;ii<=n;ii++)
	{
		for (jj=1;jj<=m;jj++)
			printf("%d ",a[ii][jj]);
		printf("\n");
	}
	return 0;
}