Pagini recente » Cod sursa (job #2816670) | Cod sursa (job #1862644) | Cod sursa (job #897555) | Cod sursa (job #2480097) | Cod sursa (job #129388)
Cod sursa(job #129388)
#include <stdio.h>
long piesa=0,a[502][502];
int i,j;
void pave(int x1,int y1,int x2,int y2){
int n,m,min,p2;
piesa++;
n=x2-x1+1;m=y2-y1+1;
min=n;
if (m<n)min=m;
p2=1;
while (p2*2<=min)
p2*=2;
for (i=x1;i<x1+p2;i++)
for (j=y1;j<y1+p2;j++)
a[i][j]=piesa;
if (x1+p2-1<x2)pave(x1+p2,y1,x2,y2);
if (y1+p2-1<y2)pave(x1,y1+p2,x1+p2-1,y2);
}
int main(){
freopen("piese.in","r",stdin);
freopen("piese.out","w",stdout);
int n,m;
scanf("%ld %ld",&n,&m);
pave (1,1,n,m);
printf("%ld\n",piesa);
for (i=1;i<=n;i++){
for (j=1;j<=m;j++)
printf("%ld ",a[i][j]);
printf("\n");
}
return 0;
}