여정

시간 제한1초메모리 제한128 MB

요약
재귀적으로 서로를 호출하는 명령어 함수들을 따라 움직이는 로봇의 경로에서 원점으로부터의 최대 맨해튼 거리를 구하거나 무한대인지 판별하는 문제입니다.
난이도

어려움10점 중 8점

유형
그래프, DFS, 시뮬레이션, 수학
정답자
아직 제출이 없습니다

문제

한 로봇이 좌표평면 위에서 살며 평면을 돌아다니는 것을 좋아한다. 어느 날 로봇은 정교한 여정을 계획하고, 그대로 따라갈 프로그램을 작성했다. 이 프로그램은 nn개의 함수 f1,f2,…,fnf_1, f_2, \dots, f_n으로 이루어져 있다. ii번째 함수 fif_i는 cic_i개의 명령으로 이루어진 수열이며, 각 명령은 다음 중 하나이다.

  • GO — 바라보는 방향으로 1미터 전진한다.
  • LEFT — 왼쪽(반시계 방향)으로 90도 회전한다.
  • RIGHT — 오른쪽(시계 방향)으로 90도 회전한다.
  • Fkk — 함수 fkf_k의 모든 명령을 실행한 뒤, 현재 함수의 다음 명령으로 돌아와 계속 실행한다.

로봇은 집인 (0,0)(0, 0)에서 처음에 xx축의 양의 방향을 바라본 채로 출발하여, 함수 f1f_1을 실행하기 시작한다.

예를 들어 함수가 다음과 같다고 하자.

  • f1f_1: GO F2 GO F2 GO F2
  • f2f_2: F3 F3 F3 F3
  • f3f_3: GO LEFT

이 함수들에 대해 로봇은 평면 위에 특정한 경로를 그리며 이동한다.

여정이 결코 끝나지 않을 수도 있다. 예를 들어 유일한 함수 f1f_1이 GO F1인 프로그램에서는 로봇이 앞으로 계속 나아가며 절대 멈추지 않는다.

로봇은 집에서 얼마나 멀리 가게 되는지 궁금하다. 로봇이 여정 동안 방문하는 모든 점의 집합을 생각하고, 그 점들에 대한 ∣x∣+∣y∣|x| + |y|의 최댓값을 구하라. 만약 로봇이 ∣x∣+∣y∣|x| + |y|가 임의로 커지는 점들을 방문한다면, 답은 Infinity이다.

입력

첫째 줄에 정수 nn (1≤n≤1001 \le n \le 100)이 주어진다.

다음 nn개의 줄에는 각 함수에 대한 설명이 주어진다. 그중 ii번째 줄은 함수 fif_i의 명령 개수인 정수 cic_i (1≤ci≤1001 \le c_i \le 100)로 시작하고, 이어서 cic_i개의 명령이 주어진다. 각 명령은 GO, LEFT, RIGHT, 또는 Fkk (1≤k≤n1 \le k \le n) 중 하나이며, 토큰들은 하나의 공백으로 구분된다.

출력

로봇이 여정 동안 방문하는 모든 점에 대한 ∣x∣+∣y∣|x| + |y|의 최댓값을 한 줄에 출력한다. 만약 로봇이 ∣x∣+∣y∣|x| + |y|가 임의로 커지는 점들에 도달한다면, 대신 Infinity를 출력한다.

예제3

  1. 예제 1

    입력
    3
    6 GO F2 GO F2 GO F2
    4 F3 F3 F3 F3
    2 GO LEFT
    
    예상 출력
    5
    
  2. 예제 2

    입력
    1
    2 GO F1
    
    예상 출력
    Infinity
    
  3. 예제 3

    입력
    4
    2 GO F2
    7 LEFT GO GO GO F3 LEFT F4
    5 GO F4 RIGHT F2 RIGHT
    7 GO GO LEFT LEFT GO LEFT GO
    
    예상 출력
    13