만드는 중입니다

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

먼저 풀고, 나중에 구현한다

면접 대비

시간 제한2초메모리 제한1024 MB

요약
두 순서 a와 b가 주어질 때, a의 원소를 스택에 넣고 꺼내서 b 순서를 만들 수 있는지 판단합니다. 가능하면 S와 C로 된 동작 순서를 출력합니다.
난이도

보통10점 중 4점

유형
스택, 그리디, 시뮬레이션
정답자
아직 제출이 없습니다

문제

ICPC에서는 팀워크가 전부입니다. 그래서 팀원 각자에게 명확한 역할이 있습니다. Sol the Solver는 문제 세트에 있는 어떤 문제든 풀 수 있고, Codie the Coder는 Sol이 떠올린 어떤 풀이든 구현할 수 있습니다. 여러분은 이 모든 것을 하나로 묶는 역할입니다. Sol과 Codie는 문제를 풀고 구현하는 순서에 매우 까다로우니, 여러분의 일은 그 순서를 맞춰 주는 것입니다.

이번 대회에는 nn개의 문제가 있으며, 각 문제의 대략적인 주제를 알고 있습니다. 예를 들어 greedy, geometry, graphs 같은 주제입니다. 편의를 위해 각 주제는 11부터 nn까지의 정수로 나타냅니다. 이 정수들은 서로 달라야 하는 것이 아니므로, 같은 주제의 문제가 여러 개 있을 수 있습니다.

Sol은 특정한 주제 순서대로 문제를 풀려고 합니다. 처음에는 주제 a1a_1인 문제, 그다음에는 주제 a2a_2인 문제, 이런 식으로 마지막에는 주제 ana_n인 문제를 풉니다. Codie는 선호 순서 b1,b2,…,bnb_1, b_2, \ldots, b_n을 가지고 있으며, 이 순서대로 문제를 구현하려고 합니다.

대회 중 여러분의 일은 Sol에게서 풀이 용지를 받아 올바른 순서로 Codie에게 전달하는 것입니다. 팀에 테이블이 하나뿐이라 풀이들을 깔끔하게 늘어놓을 공간이 충분하지 않습니다. 그래서 다음과 같은 방식으로 진행합니다. Sol에게 풀이를 요청하면 Sol은 a1,a2,…,ana_1, a_2, \ldots, a_n 순서로 풀이를 넘겨줍니다. 이를 테이블의 내 쪽에 있는 스택에 쌓아 두었다가, b1,b2,…,bnb_1, b_2, \ldots, b_n 순서로 Codie에게 넘깁니다.

정식으로는 어느 시점에서든 다음 두 가지 행동 중 하나를 할 수 있습니다.

  • 아직 풀지 않은 문제가 남아 있다면, Sol에게 다음 풀이를 요청하고 스택의 맨 위에 올려놓습니다. 이 행동은 문자 "S"로 나타냅니다.
  • 스택이 비어 있지 않다면, 스택 맨 위의 풀이 용지를 꺼내 Codie에게 줍니다. 이 행동은 문자 "C"로 나타냅니다.

주어진 선호 순서에 대해, 모든 문제가 올바른 순서로 풀리고 구현되도록 하는 행동 순서를 찾으세요. 풀이와 구현에 걸리는 시간은 고려하지 않아도 됩니다.

입력

불가능하면 "NO"를 출력합니다. 그렇지 않으면 첫 줄에 "YES"를 출력하고, 둘째 줄에 행동 순서를 출력합니다. 행동 순서는 "S" 또는 "C"로 이루어진 길이 2n2n의 문자열이며, 각 문자가 nn개씩 있어야 합니다. 문자열은 수행한 행동을 순서대로 나타냅니다.

nn개의 문제를 모두 받은 뒤에는 Sol에게 풀이를 더 요청할 수 없으며, 주제가 틀린 풀이를 Codie에게 넘길 수도 없습니다. 답이 여러 개라면 그중 아무거나 출력해도 됩니다.

예제2

  1. 예제 1

    입력
    4
    4 1 2 2
    1 2 4 2
    
    예상 출력
    YES
    SSCSCCSC
    
  2. 예제 2

    입력
    3
    2 3 1
    1 2 3
    
    예상 출력
    NO