Cod sursa(job #302184)

Utilizator lucaz0rLuca Liviu lucaz0r Data 8 aprilie 2009 18:46:23
Problema Piese Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>
#define a(i,j) a[(i)*n+(j)]

int main() {
	int n, m, i, j, min, x, y, count, k;
	int *a;

	freopen ("piese.in", "r", stdin);
	freopen ("piese.out", "w", stdout);

	scanf ("%d %d",&m, &n);

	a = malloc ((n+1) * (m+1) * sizeof(int));

	for (i = 1; i <= m; i++)
		for (j = 1; j <= n; j++)
			a(i,j) = 0;

	count = 0;

	for (i = 1; i <= m; i++)
		for (j = 1; j <= n; j++)
			if(a(i,j) == 0) {
				count++;
				if (m-i+1 < n-j+1)
					min = m-i+1;
				else
					min = n-j+1;
				k = 2;
				while (k <= min)
					k = k * 2;
				k = k/2;
				for (x = i; x <= i+k-1; x++)
					for (y = j; y <= j+k-1; y++)
						a(x,y) = count;
			}

	printf ("%d\n",count);
	for (i = 1; i <= m; i++) {
		for (j = 1; j <= n; j++)
			printf ("%d ",a(i,j));
		printf ("\n");
	}





	return 0;

}