递送菜肴

题面描述

在一个餐馆中突然来了 nn 个顾客,并且他们都点了一道菜。具体地,第 11 个顾客点了编号 b1b_1 的菜,在这之后,第 22 个顾客点了编号为 b2b_2 的菜,依此类推。

然而,由于服务器故障,后厨收到的点菜顺序被打乱了。后厨收到的点菜顺序是 a1,,ana_1, \dots, a_n,并且他们按照这个顺序做出了所有的菜。

问题到了服务员的头上。他必须按顺序给 1,,n1, \dots, n 个顾客送餐,否则一些顾客就会说“我比他先点餐,怎么不先给我上菜。”因此,服务员决定使用他的强大的运输工具:“服务栈车”。

这个服务栈车有两个功能,一个是将最先做好的菜放到餐车里面,另一个是取出最后放入餐车的菜,并且交给某个顾客。除此之外,服务员不能用别的方式操作菜。

于是问题来了,服务员能否按照点菜的顺序送餐呢?如果可以,还要输出方案。

输入格式

第一行一个正整数 nn,表示顾客的个数。

第二行 nn 个整数 a1,,ana_1, \dots, a_n,表示后厨的做菜顺序。

第三行 nn 个整数 b1,,bnb_1, \dots, b_n,表示顾客点的菜。

输出格式

如果无法按照点餐顺序送餐,输出 NO,否则输出 YES

如果输出了 YES,你还需要在第二行输出长度为 2n2n 的字符串,表示服务员的操作顺序。其中用 SC 分别表示放入餐车和拿出菜。

如果有多种方案,输出任意一种。

样例

3
2 1 2
1 2 2
YES
SSCSCC

说明/提示

后厨的出餐顺序是 2,1,22, 1, 2,三个顾客点的菜分别是 1,2,21, 2, 2。以下是一种送餐方式:

  • S,将编号为 22 的菜加入餐车,餐车内的东西是 [2][2]
  • S,将编号为 11 的菜加入餐车,餐车内的东西是 [2,1][2, 1]
  • C,将最后加入的,编号为 11 的菜拿出并交给第一位顾客,餐车内的东西是 [2][2]
  • S,将编号为 22 的菜加入餐车,餐车内的东西是 [2,2][2, 2]
  • C,将最后加入的,编号为 22 的菜拿出并交给第二位顾客,餐车内的东西是 [2][2]
  • C,将最后加入的,编号为 22 的菜拿出并交给第三位顾客,餐车内的东西是 [][]

这是一种合法的方案,当然,方案不唯一。


对于 100%100\% 的数据,1n1001 \le n \le 1001ai,bin1 \le a_i, b_i \le n

保证 ai,bia_i, b_i 互为排列。

国庆提高/省选组比赛

Attended
Status
Live... (Attended)
Rule
IOI
Problem
40
Start at
2025-10-15 19:32
End at
2025-11-16 0:00
Duration
1104 hour(s)
Host
Partic.
85