题目描述
Swipe 是一款新的手机游戏,最近大受欢迎。在 Swipe 游戏的每一个关卡中,您都会得到两个长度为 N 的数列 A 和 B。Swipe 游戏的每个关卡的目标是把数组 A 变成数组 B。
现在有两种可以对 A 进行的滑动操作。
- 向右滑动:选择一个区间 [l,r],对任意 l≤i≤r 令 Ai=Al。
- 向左滑动:选择一个区间 [l,r],对任意 l≤i≤r 令 Ai=Ar。
例如,一开始 A=[0,1,2,3,4,5],如果我们对区间 [2,4] 做向右滑动的操作,序列变为 [0,1,2,2,2,5]。如果我们对区间 [3,5] 做向左滑动的操作,序列变为 [0,1,2,5,5,5]。注意序列从 0 开始编号。
不幸的是,游戏存在一些问题,可能会包含无法通过的关卡。请问是否可以将数组 A 转换为数组 B。如果可以,请给出任意一种将数组 A 转换为数组 B 的滑动操作方案。
输入格式
输入的第一行包含一个正整数 N 表示两个数列的长度。
第二行包含 N 个空格隔开的 A 中的整数。
第三行包含 N 个空格隔开的 B 中的整数。
输出格式
如果存在一种操作方案可以把 A 变为 B,在第一行输出 YES
,否则输出 NO
。
如果在第一行输出了 YES
,则下一行包含一个非负整数 K(K≤N)表示滑动次数。
接下来 K 行每行包含三个空格隔开的数 Dj,lj 和 rj。Dj 是 R
或者 L
表示第 j 次操作是向右滑动还是向左滑动。
lj 和 rj 表示这次滑动操作的左端和右端,必须满足 0≤lj≤rj<N。
3
3 1 2
3 1 1
YES
1
R 1 2
4
1 2 4 3
1 4 2 3
NO
4
2 1 4 3
2 1 4 3
YES
0
提示
本题采用捆绑测试。
对于所有数据,保证 1≤N≤3×105,1≤Ai,Bi≤3×105。
下面的表格显示了 15 分的分配方案:
分值 |
N 的范围 |
Ai 和 Bi 的范围 |
2 |
N=2 |
1≤Ai,Bi≤3 |
4 |
1≤N≤8 |
1≤Ai,Bi≤8 |
1≤N≤500 |
1≤Ai,Bi≤3000 |
5 |
1≤N≤3×105 |
1≤Ai,Bi≤3×105 |
注意对于一个分值为 M 的子任务,如果只答对了第一行的内容,你可以得到 ⌊2M⌋ 分。