Pagini recente » Cod sursa (job #1946445) | Cod sursa (job #1581675) | Cod sursa (job #1622824) | Cod sursa (job #532361) | Cod sursa (job #2030315)
#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 /*&& v[i1][j1] == 0 && v[i2][j2] == 0*/){
short a = min(i2-i1+1, j2-j1+1);
short a1 = a;
short maxim = 0, nr = 0;
while(a1){
if(a1%2 == 1)
maxim = nr;
nr++;
a1/=2;
}
short lung = (1<<maxim);
for(short i=i1;i<=i1+lung-1;i++)
for(short j=j1;j<=j1+lung-1;j++){
if(j == j1 && i == i1 && v[i][j] == 0)
ant++;
if(v[i][j] == 0)
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;
}