Pagini recente » Cod sursa (job #2706632) | Cod sursa (job #2685799) | Cod sursa (job #211664) | Cod sursa (job #2972279) | Cod sursa (job #1152569)
#include<fstream>
#define NMAX 510
using namespace std;
ifstream f("piese.in");
ofstream g("piese.out");
int n, m, nr, urm[NMAX], mx[NMAX][NMAX], sol[NMAX][NMAX];
void Citeste()
{
f>>n>>m;
}
void Preprop()
{
int i, j, vali, valj, lim=max(n, m);
for (i=2; i<=lim; ++i) urm[i]=urm[i>>1]+1;
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
{
vali=n-i+1; valj=m-j+1;
mx[i][j]= 1 << urm[min (vali, valj) ];
}
}
void Solve()
{
int i, j, ii, jj, c;
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
if (!sol[i][j])
{
c=mx[i][j]; ++nr;
for (ii=i; ii<i+c; ++ii)
for (jj=j; jj<j+c; ++jj) sol[ii][jj]=nr;
}
}
void Scrie()
{
int i, j;
g<<nr<<"\n";
for (i=1; i<=n; ++i)
{
for (j=1; j<=m; ++j) g<<sol[i][j]<<" ";
g<<"\n";
}
}
int main()
{
Citeste();
Preprop();
Solve();
Scrie();
f.close();
g.close();
return 0;
}