Pagini recente » Cod sursa (job #3147777) | Cod sursa (job #3150257) | Arhiva de probleme | Cod sursa (job #1229285) | Cod sursa (job #1496714)
#include <stdio.h>
#include <stdlib.h>
int a[500][500];
int main()
{
FILE *fin=fopen ("piese.in","r");
FILE *fout=fopen ("piese.out","w");
int m,n,ptrt,i,j,p2,l,c;
fscanf (fin,"%d%d",&m,&n);
// m linii n coloane
ptrt=1;
for (i=0;i<m;i++)
for (j=0;j<n;j++){
if (a[i][j]==0){
// nu e niciun patrat acolo
p2=1;
while (p2+i-1<m && p2+j-1<n) p2*=2;
p2/=2;
// avem un patrat cu latura p2
for (l=i;l<i+p2;l++)
for (c=j;c<j+p2;c++) a[l][c]=ptrt;
ptrt++;
}
}
fprintf (fout,"%d\n",ptrt-1);
for (i=0;i<m;i++){
for (j=0;j<n;j++)
fprintf (fout,"%d ",a[i][j]);
fprintf (fout,"\n");
}
return 0;
}