#include #include int load_num() { int num1_lines; std::cin >> num1_lines >> std::ws; std::string curr_line; std::getline(std::cin, curr_line); // size_t row_size = curr_line.size(); size_t start_idx = curr_line.find('#'); int curr = 1; while (--num1_lines) { std::getline(std::cin, curr_line); size_t curr_idx = curr_line.find('#'); if (curr_idx < start_idx) { curr = 2*curr + 1; } else { curr *= 2; } start_idx = curr_idx; } return curr; } void print_map(int sum) { int idx = 0; int min = 0; int max = 0; std::vector indexy; indexy.push_back(0); for (int curr = sum; curr != 1; curr /= 2) { if (curr % 2 == 1) { --idx; if (idx < min) min = idx; } else { ++idx; if (idx > max) max = idx; } indexy.push_back(idx); } int size = max - min +1; std::cout << indexy.size() << std::endl; for (auto index : indexy) { int nth = index - min; for (int ii = 0; ii < nth; ii += 1) { std::cout << '.'; } std::cout << '#'; for (int ii = nth + 1; ii <= max - min; ii += 1) { std::cout << '.'; } std::cout << std::endl; } // while (sum) { // for (int i = 0; i < curr_idx; i++) std::cout << "."; // std::cout << "#"; // for (int i = curr_idx; i < max; i++) std::cout << "."; // if (sum % 2 == 0) // } } void print_num(int sum) { int idx = 0; int min = 0; int max = 0; int height = 1; for (int curr = sum; curr != 1; curr /= 2) { if (curr % 2 == 1) { --idx; if (idx < min) min = idx; } else { ++idx; if (idx > max) max = idx; } height += 1; } int width = max - min +1; int curr_idx = -min; // while (sum) { // for (int i = 0; i < curr_idx; i++) std::cout << "."; // std::cout << "#"; // for (int i = curr_idx; i < max; i++) std::cout << "."; // if (sum % 2 == 0) // } } int main() { int sum = load_num(); sum += load_num(); // print_num(sum); print_map(sum); return 0; }