Pagini recente » Cod sursa (job #819546) | Cod sursa (job #1596951) | Cod sursa (job #554337) | Cod sursa (job #658870) | Cod sursa (job #254433)
Cod sursa(job #254433)
#include<stdio.h>
FILE *fin=fopen("piese.in","r"),
*fout=fopen("piese.out","w");
int N,M,A[505][505],cnt;
void rezolvare(int x1,int y1,int x2,int y2){
int ln=x2-x1+1,col=y2-y1+1;
if(!ln||!col)
return ;
int l=1;
for(;l*2<=ln;l*=2);
for(;l>col;l/=2);
++cnt;
for(int i=x1;i<x1+l;i++)
for(int j=y1;j<y1+l;j++)
A[i][j]=cnt;
rezolvare(x1,y1+l,x1+l-1,y2);
rezolvare(x1+l,y1,x2,y2);
}
int main(){
fscanf(fin,"%d %d",&N,&M);
rezolvare(1,1,N,M);
fprintf(fout,"%d\n",cnt);
for(int i=1;i<=N;i++){
for(int j=1;j<=M;j++)
fprintf(fout,"%d ",A[i][j]);
fprintf(fout,"\n");
}
fclose(fin);
fclose(fout);
return 0;
}