#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; side.push_back(0); while (res != 1) { int tmp = res / 2; if (tmp * 2 == res) { delta--; side.push_back(delta); } else { delta++; side.push_back(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"; for (int i = 0; i < height; ++i) { matrix[height - i - 1][side[i] - minD] = '#'; // if ( i == height - 1 ){ // std::cout << side[i] << ", " << minD << "\n"; // } } std::cout << height << "\n"; for (const auto&i : matrix) { for (auto j : i) { std::cout << j; } std::cout << '\n'; } return 0; }