Pagini recente » Cod sursa (job #274622) | Cod sursa (job #144662) | Cod sursa (job #374023) | Cod sursa (job #790964) | Cod sursa (job #125681)
Cod sursa(job #125681)
#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;
}