Pagini recente » Cod sursa (job #2570683) | Cod sursa (job #816020) | Cod sursa (job #647705) | Cod sursa (job #1399117) | Cod sursa (job #494537)
Cod sursa(job #494537)
#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;
}