#P13586. [NWRRC 2023] First Solved, Last Coded

    ID: 13614 远端评测题 2000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>模拟动态规划 DP2023Special Judge区间 DPICPCNWRRC

[NWRRC 2023] First Solved, Last Coded

Description

在 ICPC 比赛中,团队合作至关重要。因此,你们队里的每个人都有明确的分工:Sol the Solver 能解决题目集中的任何问题,Codie the Coder 能实现 Sol 想出的任何解法,而你……则是把一切联系在一起的纽带。Sol 和 Codie 对于解决/实现题目的顺序都非常挑剔,你的任务就是满足他们的偏好。

即将到来的比赛中有 nn 道题目,你知道每道题的大致类型:贪心、几何、图论等。为简化问题,我们用 11nn 的整数来表示每种类型。这些整数不一定互不相同,也就是说,比赛中可能有多道题属于同一类型。

Sol 希望按照特定的题目类型顺序来解决问题:首先是类型为 a1a_1 的题目,然后是 a2a_2,依此类推,最后是 ana_n。Codie 也有自己的偏好列表:b1,b2,,bnb_1, b_2, \ldots, b_n,只愿意按照这个题目类型顺序来实现题目。

你在比赛中的工作是从 Sol 那里接过解答纸,然后按正确的顺序交给 Codie。由于你们队只有一张桌子,你没有足够的空间把所有解答纸都整齐地摆放好。因此,你想出了如下的工作流程:你会按 a1,a2,,ana_1, a_2, \ldots, a_n 的顺序向 Sol 要解答纸,并将其放在你桌子上的一个栈中,然后再按 b1,b2,,bnb_1, b_2, \ldots, b_n 的顺序把解答纸交给 Codie。

更正式地说,在比赛的任何时刻,你最多可以进行以下两种操作之一:

  • 如果还有未解决的问题,可以向 Sol 再要一份解答纸,并将其放到你的解答纸栈顶。这个操作用字符 S\tt{S} 表示。
  • 如果你的栈非空,可以从栈顶取出一份解答纸交给 Codie 实现。这个操作用字符 C\tt{C} 表示。

对于给定的 Sol 和 Codie 的偏好列表,请找出一组操作序列,保证所有题目都能按正确的顺序被解决和实现。假设解决和实现题目的时间都可以忽略不计——管理解答纸才是更难、更重要的工作。

Input Format

第一行包含一个整数 nn,表示比赛中的题目数量(1n1001 \le n \le 100)。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n,表示 Sol 的题目类型偏好顺序(1ain1 \le a_i \le n)。

第三行包含 nn 个整数 b1,b2,,bnb_1, b_2, \ldots, b_n,表示 Codie 的题目类型偏好顺序(1bin1 \le b_i \le n)。

给定的两个列表作为多重集是相等的:每个整数在 AABB 中出现的次数相同。

Output Format

如果无法完成任务,输出 NO\tt{NO}。否则,第一行输出 YES\tt{YES},第二行输出操作序列:一个长度为 2n2n 的字符串,由 nnS\tt{S}nnC\tt{C} 组成,依次描述你的操作顺序。

你不能在所有 nn 道题都已解决后再向 Sol 要解答纸,也不能把题目类型不符的解答纸交给 Codie。如果有多种答案,输出任意一种即可。

4
4 1 2 2
1 2 4 2
YES
SSCSCCSC
3
2 3 1
1 2 3
NO

Hint

由 ChatGPT 4.1 翻译