Pagini recente » Cod sursa (job #1794735) | Cod sursa (job #1830373) | Cod sursa (job #1111078) | Istoria paginii runda/leiten | Cod sursa (job #377806)
Cod sursa(job #377806)
#include <algorithm>
using namespace std;
#define DIM 505
int put[10]={1,2,4,8,16,32,64,128,256,512};
int a[DIM][DIM];
int n,m,nrmin;
int find (int val)
{
int i;
for (i=0; val>=put[i]; ++i);
return i-1;
}
void umple (int x1,int y1,int x2,int y2)
{
int i,j,f;
if (x2<x1 || y2<y1)
return ;
f=find (min (x2-x1+1,y2-y1+1));
++nrmin;
for (i=x1; i<x1+(1<<f); ++i)
for (j=y1; j<y1+(1<<f); ++j)
a[i][j]=nrmin;
umple (x1,y1+(1<<f),x1+(1<<f)-1,y2);
umple (x1+(1<<f),y1,x2,y2);
}
void print ()
{
int i,j;
printf ("%d\n",nrmin);
for (i=1; i<=n; ++i)
{
for (j=1; j<=m; ++j)
printf ("%d ",a[i][j]);
printf ("\n");
}
}
int main ()
{
freopen ("piese.in","r",stdin);
freopen ("piese.out","w",stdout);
scanf ("%d%d",&n,&m);
umple (1,1,n,m);
print ();
return 0;
}