Pagini recente » Cod sursa (job #2736057) | Cod sursa (job #1166178) | Cod sursa (job #2682442) | Cod sursa (job #3298037) | Cod sursa (job #302184)
Cod sursa(job #302184)
#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;
}