Pagini recente » Cod sursa (job #2653114) | Cod sursa (job #3292791) | Cod sursa (job #1177715) | Cod sursa (job #390354) | Cod sursa (job #127254)
Cod sursa(job #127254)
#include <fstream.h>
#include <math.h>
ifstream fin("piese.in");
ofstream fout("piese.out");
int n,m,a[503][503],min,ok=1;
void citire()
{
fin>>n>>m;
}
void f (int x1,int y1,int x2,int y2)
{
if (x1 >n || y1>m)
return ;
int mi=x2-x1+1;
if (y2-y1+1<mi)
mi=y2-x1+1;
int k=-1;
while (pow(2,k)<=mi)
k++;
if (k>0) {
min++;
k--;
for (int i=x1;i<x1+pow(2,k);i++)
for (int j=y1;j<y1+pow(2,k);j++)
a[i][j]=min;
f (x1,y1+pow(2,k),x1+pow(2,k)-1,y2);
f (x1+pow(2,k),y1,x2,y2);
}
}
void afisare()
{
fout<<min<<"\n";
for (int i=1;i<=n;i++)
{
for (int j=1;j<=m;j++)
fout<<a[i][j]<<" ";
fout<<"\n";
}
}
int main()
{
citire();
f(1,1,n,m);
afisare();
fin.close();
fout.close();
return 0;
}