Pagini recente » Cod sursa (job #1725276) | Cod sursa (job #2180102) | Cod sursa (job #2550986) | Cod sursa (job #2656974) | Cod sursa (job #1966796)
#include <fstream>
using namespace std;
ifstream f("piese.in");
ofstream g("piese.out");
int n, m, i, doi[30], a[502][502], maxim;
void aseaza(int x, int y, int nr)
{
int latime = min(n - x, m - y) + 1;
int i = 0;
for(i = 0; ; ++ i)
{
if( doi[i] > latime )
break;
}
latime = doi[i - 1];
int j = 0;
for(i = x; i <= x + latime - 1; ++ i)
{
for(j = y; j <= y + latime - 1; ++ j)
a[i][j] = nr;
}
int ok = 1;
int xv = 0, yv = 0;
for(i = 1; i <= n && ok == 1; ++ i)
{
for(j = 1; j <= m && ok == 1; ++ j)
{
if(a[i][j] == 0)
{
xv = i;
yv = j;
ok = 0;
}
}
}
if(nr > maxim) maxim = nr;
if( ok == 0 ) aseaza(xv, yv, nr + 1);
}
int main()
{
f>>n>>m;
doi[0] = 1;
for(i = 1; i <= 10; ++ i)
doi[i] = doi[i-1] * 2;
aseaza(1, 1, 1);
g<<maxim<<'\n';
for(i = 1; i <= n; ++ i)
{
for(int j = 1; j <= m; ++ j)
g<<a[i][j]<<" ";
g<<'\n';
}
return 0;
}