여정
시간 제한1초메모리 제한128 MB
재귀적으로 서로를 호출하는 명령어 함수들을 따라 움직이는 로봇의 경로에서 원점으로부터의 최대 맨해튼 거리를 구하거나 무한대인지 판별하는 문제입니다.
문제
한 로봇이 좌표평면 위에서 살며 평면을 돌아다니는 것을 좋아한다. 어느 날 로봇은 정교한 여정을 계획하고, 그대로 따라갈 프로그램을 작성했다. 이 프로그램은 개의 함수 으로 이루어져 있다. 번째 함수 는 개의 명령으로 이루어진 수열이며, 각 명령은 다음 중 하나이다.
- GO — 바라보는 방향으로 1미터 전진한다.
- LEFT — 왼쪽(반시계 방향)으로 90도 회전한다.
- RIGHT — 오른쪽(시계 방향)으로 90도 회전한다.
- F — 함수 의 모든 명령을 실행한 뒤, 현재 함수의 다음 명령으로 돌아와 계속 실행한다.
로봇은 집인 에서 처음에 축의 양의 방향을 바라본 채로 출발하여, 함수 을 실행하기 시작한다.
예를 들어 함수가 다음과 같다고 하자.
- :
GO F2 GO F2 GO F2 - :
F3 F3 F3 F3 - :
GO LEFT
이 함수들에 대해 로봇은 평면 위에 특정한 경로를 그리며 이동한다.
여정이 결코 끝나지 않을 수도 있다. 예를 들어 유일한 함수 이 GO F1인 프로그램에서는 로봇이 앞으로 계속 나아가며 절대 멈추지 않는다.
로봇은 집에서 얼마나 멀리 가게 되는지 궁금하다. 로봇이 여정 동안 방문하는 모든 점의 집합을 생각하고, 그 점들에 대한 의 최댓값을 구하라. 만약 로봇이 가 임의로 커지는 점들을 방문한다면, 답은 Infinity이다.
입력
첫째 줄에 정수 ()이 주어진다.
다음 개의 줄에는 각 함수에 대한 설명이 주어진다. 그중 번째 줄은 함수 의 명령 개수인 정수 ()로 시작하고, 이어서 개의 명령이 주어진다. 각 명령은 GO, LEFT, RIGHT, 또는 F () 중 하나이며, 토큰들은 하나의 공백으로 구분된다.
출력
로봇이 여정 동안 방문하는 모든 점에 대한 의 최댓값을 한 줄에 출력한다. 만약 로봇이 가 임의로 커지는 점들에 도달한다면, 대신 Infinity를 출력한다.