Pagini recente » Cod sursa (job #2625975) | Cod sursa (job #1790324) | Cod sursa (job #1041512) | Cod sursa (job #117119) | Cod sursa (job #325522)
Cod sursa(job #325522)
#include<stdio.h>
int n,m,nr;
int v[502][502];
void read()
{
freopen("piese.in","r",stdin);
freopen("piese.out","w",stdout);
scanf("%d%d",&n,&m);
}
inline int min(int a, int b)
{
if(a<b)
return a;
return b;
}
void rec(int x1, int y1, int x2, int y2)
{
if(min(x2-x1+1,y2-y1+1)<=0)
return;
nr++;
int i,j,d,lim;
lim=min(x2-x1+1,y2-y1+1);
d=1;
while(d<=lim)
{
d=d<<1;
}
d=d>>1;
for(i=1;i<=d;i++)
for(j=1;j<=d;j++)
v[x1+i-1][y1+j-1]=nr;
rec(x1, y1+d, x1+d-1, y2);
rec(x1+d, y1, x2, y2);
}
int main()
{
read();
rec(1,1,n,m);
int i,j;
printf("%d\n",nr);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
printf("%d ",v[i][j]);
printf("\n");
}
return 0;
}