#include #include #include #include int retID() { std::string line; std::getline(std::cin, line); for (int i = 0; i < (int)line.size(); ++i) { if (line[i] == '#') return i; } return -1; } int load(int &N) { std::cin >> N; std::cin.ignore(); int id = retID(); int number = 1; for (int i = 0;i < N-1; ++i) { int d = retID(); if (d > id) { number *= 2; } else { number = (number * 2) + 1; } id = d; } return number; } int main() { std::ios::sync_with_stdio(false); int x, y, h_1, h_2; x = load(h_1); y = load(h_2); int res = x+y; std::vector side; int minD = 0, maxD = 0; int delta = 0; int height = 1; while (res != 1) { int tmp = res / 2; if (tmp * 2 == res) { side.push_back(1); delta++; } else { side.push_back(-1); delta--; } minD = std::min(delta, minD); maxD = std::max(delta, maxD); res = tmp; ++height; } int width = maxD - minD + 1; std::vector> matrix(height, std::vector(width, '.')); // std::cout << x << ", " << y <<", res : " << x+y << "\n\n\n"; // delta = 0; for (int i = 0; i < height; ++i) { matrix[i][delta - minD] = '#'; delta += side[i]; } std::cout << height << "\n"; for (const auto &i : matrix) { for (auto j : i) { std::cout << j; } std::cout << '\n'; } return 0; }