Pagini recente » Cod sursa (job #275416) | Cod sursa (job #495949) | Cod sursa (job #2961064) | Cod sursa (job #1936332) | Cod sursa (job #1151937)
#include<fstream>
#define NMAX 510
using namespace std;
ifstream f("piese.in");
ofstream g("piese.out");
int i, j, n, m, nr=0, ap[NMAX], lim, a[NMAX][NMAX];
void Formeaza(int is, int js, int ij, int jj)
{
int val1=ij-is+1, val2=jj-js+1, c;
if (is>0 && is<n+1 && ij>0 && ij<n+1 && js>0 && js<m+1 && jj>0 && jj<m+1)
if (val1==val2 && (val1 & (val1-1))==0 && (val2 & (val2-1))==0 && val1!=0)
{
int i, j;
++nr;
for (i=is; i<=ij; ++i)
for (j=js; j<=jj; ++j) a[i][j]=nr;
}
else
{
c=1<<ap[min(val1, val2)];
Formeaza(is, js, is+c-1, js+c-1);
Formeaza(is+c, js, ij, js+c-1);
Formeaza(is, js+c, ij, jj);
}
}
int main()
{
f>>n>>m; lim=max(n, m);
for (i=2; i<=lim; ++i)
ap[i]=ap[i>>1]+1;
Formeaza(1, 1, n, m);
g<<nr<<"\n";
for (i=1; i<=n; ++i)
{
for (j=1; j<=m; ++j) g<<a[i][j]<<" ";
g<<"\n";
}
f.close();
g.close();
return 0;
}