P13586 [NWRRC 2023] First Solved, Last Coded

题目描述

在 ICPC 比赛中,团队合作至关重要。因此,你们队里的每个人都有明确的分工:Sol the Solver 能解决题目集中的任何问题,Codie the Coder 能实现 Sol 想出的任何解法,而你……则是把一切联系在一起的纽带。Sol 和 Codie 对于解决/实现题目的顺序都非常挑剔,你的任务就是满足他们的偏好。 即将到来的比赛中有 $n$ 道题目,你知道每道题的大致类型:贪心、几何、图论等。为简化问题,我们用 $1$ 到 $n$ 的整数来表示每种类型。这些整数不一定互不相同,也就是说,比赛中可能有多道题属于同一类型。 Sol 希望按照特定的题目类型顺序来解决问题:首先是类型为 $a_1$ 的题目,然后是 $a_2$,依此类推,最后是 $a_n$。Codie 也有自己的偏好列表:$b_1, b_2, \ldots, b_n$,只愿意按照这个题目类型顺序来实现题目。 你在比赛中的工作是从 Sol 那里接过解答纸,然后按正确的顺序交给 Codie。由于你们队只有一张桌子,你没有足够的空间把所有解答纸都整齐地摆放好。因此,你想出了如下的工作流程:你会按 $a_1, a_2, \ldots, a_n$ 的顺序向 Sol 要解答纸,并将其放在你桌子上的一个栈中,然后再按 $b_1, b_2, \ldots, b_n$ 的顺序把解答纸交给 Codie。 更正式地说,在比赛的任何时刻,你最多可以进行以下两种操作之一: - 如果还有未解决的问题,可以向 Sol 再要一份解答纸,并将其放到你的解答纸栈顶。这个操作用字符 $\tt{S}$ 表示。 - 如果你的栈非空,可以从栈顶取出一份解答纸交给 Codie 实现。这个操作用字符 $\tt{C}$ 表示。 对于给定的 Sol 和 Codie 的偏好列表,请找出一组操作序列,保证所有题目都能按正确的顺序被解决和实现。假设解决和实现题目的时间都可以忽略不计——管理解答纸才是更难、更重要的工作。

输入格式

第一行包含一个整数 $n$,表示比赛中的题目数量($1 \le n \le 100$)。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$,表示 Sol 的题目类型偏好顺序($1 \le a_i \le n$)。 第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$,表示 Codie 的题目类型偏好顺序($1 \le b_i \le n$)。 给定的两个列表作为多重集是相等的:每个整数在 $A$ 和 $B$ 中出现的次数相同。

输出格式

如果无法完成任务,输出 $\tt{NO}$。否则,第一行输出 $\tt{YES}$,第二行输出操作序列:一个长度为 $2n$ 的字符串,由 $n$ 个 $\tt{S}$ 和 $n$ 个 $\tt{C}$ 组成,依次描述你的操作顺序。 你不能在所有 $n$ 道题都已解决后再向 Sol 要解答纸,也不能把题目类型不符的解答纸交给 Codie。如果有多种答案,输出任意一种即可。

说明/提示

由 ChatGPT 4.1 翻译