#include #include #include #include #include #define LEFT 0 #define RIGHT 1 #define VERTICAL 2 #define HORIZONTAL 3 #define DIAGONAL 4 #define ANTI_DIAGONAL 5 std::map nieco; void vertical(std::vector< std::string >& vec) { unsigned int size = vec.size(); for ( unsigned int i =0; i& vec) { unsigned int size = vec.size(); for ( unsigned int i =0; i& vec) { std::vector < std::string > copy = vec; unsigned int size = vec.size(); for ( unsigned int i =0; i& vec) { std::vector < std::string > copy = vec; unsigned int size = vec.size(); for ( unsigned int i =0; i& vec) { right(vec); vertical(vec); } void anti_diagonal(std::vector< std::string >& vec) { left(vec); vertical(vec); } int main() { std::vector < std::string > vec; nieco['<'] = "v^><^v"; nieco['>'] = "^v<>v^"; nieco['^'] = "<>^v<>"; nieco['v'] = "><"; nieco['o'] = "oooooo"; nieco['x'] = "xxxxxx"; nieco['/'] = "\\\\\\\\//"; nieco['\\'] = "////\\\\"; nieco['|'] = "--||--"; nieco['-'] = "||--||"; int n; while (std::cin >> n){ vec.resize(n); for (int i = 0; i < n; i++){ std::cin >> vec[i]; } std::string line; line.reserve(2000000); std::getline(std::cin, line); std::getline(std::cin, line); int direction = 0; bool back = false; for(unsigned int j = 0; j < line.size(); j+=2){ switch(line[j]){ case'|': if (direction == 1) direction = 3; else if (direction == 3) direction = 1; back = !back; break; case'-': if (direction == 0) direction = 2; else if (direction == 2) direction = 0; back = !back; break; case'<': direction = (direction + 3) % 4; break; case'>': direction = (direction + 1) % 4; break; case'\\': direction = (direction + 1) % 4; if (direction == 1) direction = 3; else if (direction == 3) direction = 1; back = !back; break; case'/': direction = (direction + 3) % 4; if (direction == 1) direction = 3; else if (direction == 3) direction = 1; back = !back; break; } } // Output if (back) vertical(vec); for(int i = 0; i < direction; i++){ right(vec); } for ( unsigned int j = 0; j