#include #include const int MAXSIZE = 37; int convert_num(){ int n; std::cin >> n; std::vector> arr(MAXSIZE, std::vector (MAXSIZE, 0)); char c; std::string line; std::getline(std::cin, line); int startj = 1; for(size_t i = 1; i<=n; i++){ std::getline(std::cin, line); for(size_t j = 1; j<=line.size(); j++){ if(line[j-1] == '#'){ arr[i][j] = 1; if(i == 1) startj = j; } } } int num1 = 1; int curj = startj; for(size_t i = 1; i<=n; i++){ if(arr[i+1][curj-1] == 1){ num1 = num1*2 + 1; curj--; } if(arr[i+1][curj+1] == 1){ num1 = num1*2; curj++; } } return num1; } int main() { int num1 = convert_num(); int num2 = convert_num(); int sum = num1 + num2; int L = 0, R = 0, curpos = 0, curnum = sum; int cnt = 0; while(curnum > 1){ if(curnum % 2 != 0){ curpos--; L = std::min(L, curpos); } else{ curpos++; R = std::max(R, curpos); } curnum/=2; cnt++; } std::cout << cnt+1 << '\n'; int pos = -L, n = R-L+1, nextpos = -1; while(sum >= 1){ for(int i = 0; i