Pagini recente » Cod sursa (job #1697807) | Cod sursa (job #2351947) | Cod sursa (job #3226130) | Cod sursa (job #1693965) | Cod sursa (job #2540470)
#include <fstream>
#include <cmath>
using namespace std;
const int nmax=505;
int v[nmax][nmax];
int k=0;
void solve(int xi,int yi,int xf,int yf)
{
int p2=(1<<(int)log2(min(xf-xi+1,yf-yi+1)));
k++;
for(int i=xi; i<=xi+p2-1; i++)
for(int j=yi; j<=yi+p2-1; j++)
v[i][j]=k;
if(yi+p2<=yf and xi+p2-1<=xf)
solve(xi,yi+p2,xi+p2-1,yf);
if(xi+p2<=xf)
solve(xi+p2,yi,xf,yf);
}
int main()
{
ifstream cin("piese.in");
ofstream cout("piese.out");
int n,m;
cin>>n>>m;
solve(1,1,n,m);
cout<<k<<"\n";
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
cout<<v[i][j]<<" ";
cout<<"\n";
}
return 0;
}