Pagini recente » Cod sursa (job #1526252) | Cod sursa (job #879887) | Cod sursa (job #406818) | Cod sursa (job #605646) | Cod sursa (job #2902429)
#include <iostream>
#include <fstream>
#include <cmath>
#define MAX 502
using namespace std;
int n,m,a[MAX][MAX];
ifstream fin("piese.in");
ofstream fout("piese.out");
bool inauntru(int x, int y){
return ( (1 <= x && x <= n) && (1 <= y && y <= m) );
}
void fillMat(int startx, int starty, int stopx, int stopy, int val){
for(int i = startx; i <= stopx; i++){
for(int j = starty; j <= stopy; j++){
a[i][j] = val;
}
}
}
int main()
{
fin >> n >> m;
int maxLen = log2(max(n, m));
int ans = 0;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
if(a[i][j] == 0){
ans++;
int len = 1<<maxLen;
while(!inauntru(i+len-1, j) || !inauntru(i, j+len-1) || !inauntru(i+len-1, j+len-1)){
len /= 2;
}
fillMat(i, j, i+len-1, j+len-1, ans);
}
}
}
fout << ans << "\n";
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
fout << a[i][j] << " ";
}
fout << "\n";
}
return 0;
}