Pagini recente » Cod sursa (job #542058) | Cod sursa (job #731174) | Cod sursa (job #215921) | Cod sursa (job #1179207) | Cod sursa (job #1966719)
#include <fstream>
#include <vector>
#include <cstring>
#include <algorithm>
int n, m;
int a[505][505];
int solution = 0;
void Fill(int l1, int c1, int l2, int c2) {
int minim = std::min(c2 - c1 + 1, l2 - l1 + 1);
if (minim == 0)
return;
int pow = 1;
while (pow <= minim)
pow <<= 1;
pow >>= 1;
++solution;
for (int i = l1; i <= l1 + pow - 1; ++i)
for (int j = c1; j <= c1 + pow - 1; ++j)
a[i][j] = solution;
Fill(l1 + pow, c1, l2, c1 + pow - 1);
Fill(l1, c1 + pow, l2, c2);
}
int main() {
std::ifstream inputFile("piese.in");
std::ofstream outputFile("piese.out");
inputFile >> n >> m;
Fill(1, 1, n, m);
outputFile << solution << '\n';
for (int i = 1; i <= n; ++i, outputFile << '\n')
for (int j = 1; j <= m; ++j)
outputFile << a[i][j] << ' ';
inputFile.close();
outputFile.close();
return 0;
}
//Trust me, I'm the Doctor!