Pagini recente » Cod sursa (job #724846) | Cod sursa (job #2040359) | Cod sursa (job #1593089) | Cod sursa (job #172292) | Cod sursa (job #447688)
Cod sursa(job #447688)
#include<fstream>
#define dmax 503
using namespace std;
ifstream in("piese.in");
ofstream out("piese.out");
int n,m,mat[dmax][dmax],sol;
const int pw[]={1,2,4,8,16,32,64,128,256};
void fill(int x,int y,int xx,int yy)
{ int d1,d2,l,i,j,k;
if(x > xx || y > yy)
return;
sol++;
d1=xx-x+1;
d2=yy-y+1;
l=min(d1,d2);
for(i=0;i<=8;i++)
if(pw[i] <= l)
k=pw[i];
for(i=x;i<x+k;i++)
for(j=y;j<y+k;j++)
mat[i][j]=sol;
fill(x+k,y,xx,y+k-1);
fill(x,y+k,xx,yy);
}
int main()
{ int i,j;
in>>n>>m;
in.close();
fill(1,1,n,m);
out<<sol<<'\n';
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)
out<<mat[i][j]<<" ";
out<<'\n';
}
out.close();
return 0;
}