Cod sursa(job #125681)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 20 ianuarie 2008 16:03:48
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>

int a[501][501], n, m, nr;


void acopar(int x1, int y1, int x2, int y2)
{
	int x, i, j, d;
	nr++;
	x = 0;
	while ((x1 + (1<<x) - 1) <= x2 && (y1 + (1<<x) - 1) <= y2) x++;
	x--;
	d = 1<<x;

	for (i = 1; i <= d; i++)
		for (j = 1; j <= d; j++) a[x1 - 1 + i][y1 - 1 + j] = nr;

	if (x1 + d <= n && a[x1 + d][y1] == 0) acopar(x1 + d, y1, n, m);
	if (y1 + d <= m && a[x1][y1 + d] == 0) acopar(x1, y1 + d, n, m);


}

void afis()
{
	printf("%d\n",nr);
	int i, j;
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= m; j++) printf("%d ", a[i][j]);
		printf("\n");
	}
}





int main()
{
	freopen("piese.in","r",stdin);
	freopen("piese.out","w",stdout);
	scanf("%d %d", &n, &m);

	acopar(1,1,n,m);
	afis();
	return 0;
}