Pagini recente » Cod sursa (job #811051) | Cod sursa (job #2332650) | Cod sursa (job #1327968) | Cod sursa (job #2534024) | Cod sursa (job #125761)
Cod sursa(job #125761)
#include<stdio.h>
int n,m,i,j,a[500][500],k;
int max(int n,int m)
{int x=1;
while(x<=n&&x<=m) x=x<<1;
x=x>>1;
return x;}
void generate(int s1,int s2,int n,int m)
{if(!(n+1-s1)||!(m+1-s2)) return;
int x=max(n+1-s1,m+1-s2);
k++;
for(i=s1;i<=s1+x-1;i++) for(j=s2;j<=s2+x-1;j++) a[i][j]=k;
generate(s1+x,s2,n,s2+x-1);
generate(s1,s2+x,n,m);}
int main()
{freopen("piese.in","r",stdin);
freopen("piese.out","w",stdout);
scanf("%d %d",&n,&m);
generate(1,1,n,m);
printf("%d\n",k);
for(i=1;i<=n;i++) {
for(j=1;j<=m;j++)
printf("%d ",a[i][j]);
printf("\n");}
fclose(stdout);
return 0;}