Cod sursa(job #1966719)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 15 aprilie 2017 15:22:56
Problema Piese Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#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!