Pagini recente » Cod sursa (job #1347585) | Cod sursa (job #2230159) | Cod sursa (job #1311631) | Cod sursa (job #2463971) | Cod sursa (job #2030321)
#include <fstream>
using namespace std;
short n, i, m;
int v[503][503], ant;
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;
short maxim = 0, nr = 0;
for(short i=8;i>=0;i--){
short t = (1<<i);
if(a1>=t){
maxim = i;
break;
}
}
short lung = (1<<maxim);
for(short i=i1;i<=i1+lung-1;i++)
for(short j=j1;j<=j1+lung-1;j++)
if(v[i][j] == 0){
if(j == j1 && i == i1)
ant++;
v[i][j] = ant;
}
umplere(i1+lung, j1, n, j1+lung-1);
umplere(i1, j1+lung, i1+lung-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;
}