만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

셜록에게 걸렸다

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

요약
전화번호부에서 숫자만 모은 문자열 위에서 커서 명령을 수행해 기록되는 숫자를 출력하는 문제입니다. 잘못된 명령이 있으면 MISS ME!를 출력합니다.
난이도

보통10점 중 4점

유형
시뮬레이션, 문자열, 구현
정답자
아직 제출이 없습니다

문제

런던 광역경찰청 본부인 스코틀랜드 야드의 형사들이 James Moriarty가 중앙은행에 가한 사이버 공격을 셜록 홈즈에게 알렸다. 형사들은 이 공격을 멈출 수 있는 비밀 코드도 찾아냈다. 최고 요원에 따르면 Moriarty는 고객 중 한 명의 전화번호부에 이 코드를 숨겼다. 셜록은 그 고객과 접촉할 수 있다.

올바른 전화번호는 11자리 숫자이며 앞자리는 0이다. 고객은 각 전화번호의 숫자 사이에 하이픈(-)이나 공백을 넣어 적을 수 있다. 전화번호부의 일부 번호는 앞자리 0이 빠져 있을 수도 있다. 예를 들어 09163264128은 916 32 64 128이나 - 0916-16-32--64 - 128-처럼 적혀 있을 수 있다.

셜록은 카페에서 고객과 편안한 대화를 나누기로 했다. 그 사이 셜록의 동료 John Watson 박사가 고객 몰래 전화번호부를 가져갔다. 셜록은 Watson 박사에게 전화번호부를 컴퓨터에서 숫자 문자의 새 수열 CC로 정리하라고 지시했다. CC는 0부터 번호가 매겨진다. Watson 박사는 전화번호를 나온 순서대로 이어서 입력하되, 숫자가 아닌 문자는 모두 제거한다. 필요한 경우 앞자리 0을 추가한다.

Watson 박사는 CC를 준비하고 커서를 첫 문자에 두었다. 커서는 CC의 어떤 문자 앞에도 놓을 수 있다. Watson 박사는 셜록의 지시를 기다렸다가 출력 수열 SS를 만든다. 셜록은 다음 지시 중 하나를 보낸다.

  • go ii: 커서를 CC의 ii번째 정리된 전화번호의 첫 문자로 옮긴다. 예를 들어 go 0은 커서를 첫 번째 전화번호로 옮긴다.
  • forward ii: 커서를 숫자 ii개만큼 앞으로 옮긴다.
  • backward ii: 커서를 숫자 ii개만큼 뒤로 옮긴다.
  • next ii: 커서 위치부터 다음 ii개의 숫자를 SS에 쓴다. 커서가 위치 cc 앞에 있으면 c,c+1,…,c+i−1c, c + 1, \dots, c + i - 1의 숫자를 쓴다. 커서 위치는 바뀌지 않는다.
  • pick ii jj: i<ji < j이면 커서 바로 뒤의 숫자가 속한 전화번호에서 i,i+1,…,ji, i + 1, \dots, j번째 위치의 숫자를 SS에 쓴다. 그렇지 않으면 i,i−1,…,ji, i - 1, \dots, j 순서로 쓴다. 커서 위치는 그대로 유지된다. 0≤i,j≤100 \le i, j \le 10이며 pick 0 0은 첫 번째 숫자를 쓴다.

셜록은 실수를 바로잡기 위해 다음 지시를 보낼 수도 있다.

  • delete ii: SS의 끝에서 마지막 ii개의 숫자를 지운다.

입력

입력은 전화번호부의 내용과 셜록의 지시로 이루어진다. 전화번호부에는 nn개의 전화번호가 있으며(1≤n≤1,0001 \le n \le 1{,}000), 쉼표나 줄바꿈으로 구분된다. 각 전화번호는 10자리 또는 11자리 숫자(0-9)로 이루어진 문자열이며, 하이픈이나 공백을 포함할 수 있다. 전화번호부의 전체 문자 수는 10610^6을 넘지 않는다. 전화번호 목록은 문자 # 하나만 있는 줄로 끝난다.

그 뒤의 각 줄에는 셜록의 지시가 하나씩 적혀 있다. 셜록은 최대 10,000개의 지시를 보낸다. 모든 인자는 20,000 이하의 음이 아닌 정수다. 모든 지시는 위에 나온 여섯 가지 중 하나다.

출력

추출된 비밀 코드를 숫자 문자열로 출력한다. 코드는 비어 있을 수 있다. 코드가 10,000자리를 넘으면 처음 10,000자리만 출력한다.

셜록이 집중력을 잃고 잘못된 지시를 보낼 수도 있다. go가 존재하지 않는 전화번호를 가리키거나, forward, backward, next, pick, delete의 인자가 CC에 없는 숫자나 전화번호를 가리키는 경우다. 이때는 Moriarty가 성공한 것이므로 MISS ME!를 대문자로 출력한다.

예제2

  1. 예제 1

    입력
    0912 358 8908
    0872-3344567,0989112-2345
    9899988782
    #
    go 0
    pick 0 3
    next 4
    forward 12
    next 2
    backward 2
    pick 0 1
    go 3
    pick 0 1
    delete 1
    
    예상 출력
    0912091287090
    
  2. 예제 2

    입력
    09242424024
    00188990376
    #
    go 2
    next 4
    delete 1
    
    예상 출력
    MISS ME!