Pagini recente » Cod sursa (job #1293691) | Cod sursa (job #613976) | Cod sursa (job #1065321) | Istoria paginii home | Cod sursa (job #2030844)
#include <fstream>
using namespace std;
short n, i, m;
int v[503][503], ant, f[504], lung[503];
ifstream fin("piese.in");
ofstream fout("piese.out");
void umplere(short i1, short j1, short i2, short j2){
if(i1>=1 && i1<=n && j1<=m && j1>=1 && i2>=1 && i2<=n && j2<=m && j2>=1 && i1<=i2 && j1<=j2 ){
short a = min(i2-i1+1, j2-j1+1);
short a1 = a;
if(f[a1] == 0){
f[a1]++;
short maxim = 0, nr = 0;
for(short i=8;i>=0;i--){
short t = (1<<i);
if(a1>=t){
maxim = i;
break;
}
}
lung[a1] = (1<<maxim);
}
for(short i=i1;i<=i1+lung[a1]-1;i++)
for(short j=j1;j<=j1+lung[a1]-1;j++)
if(v[i][j] == 0){
if(j == j1 && i == i1)
ant++;
v[i][j] = ant;
}
umplere(i1+lung[a1], j1, n, j1+lung[a1]-1);
umplere(i1, j1+lung[a1], i1+lung[a1]-1, m);
}
}
int main(){
fin>>n>>m;
umplere(1, 1, n, m);
fout<<ant<<"\n";
for(short i=1;i<=n;i++){
for(short j=1;j<=m;j++)
fout<<v[i][j]<<" ";
fout<<"\n";
}
return 0;
}