Pagini recente » Cod sursa (job #1846823) | Cod sursa (job #2589036) | Cod sursa (job #2763357) | Cod sursa (job #379865) | Cod sursa (job #2540488)
//#include <iostream>
#include <fstream>
using namespace std;
int v[505][505],cnt;
ifstream cin("piese.in");
ofstream cout("piese.out");
void rec(int x1,int y1,int x2,int y2){
if(x1>x2 or y1>y2)
return;
//cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<"\n";
if(x1==x2 and y1==y2){
v[x1][y1]=++cnt;
return;
}
int prod=1;
while(prod<=min(x2-x1+1,y2-y1+1)){
prod*=2;
}
prod/=2;
++cnt;
for(int i=x1;i<=x1+prod-1;i++){
for(int j=y1;j<=y1+prod;j++){
v[i][j]=cnt;
}
}
rec(x1+prod,y1,x2,y1+prod-1);
rec(x1,y1+prod,x2,y2);
}
int main()
{
int n,m;
cin>>n>>m;
rec(1,1,n,m);
cout<<cnt<<"\n";
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)
cout<<v[i][j]<<" ";
cout<<"\n";
}
return 0;
}