P5868 [SEERC 2018] Min Max Convert

题目描述

$A$ 是一个有 $N$ 个元素的数列。你可以对这个数列进行以下两种操作: 1. 选出一个下标的区间 $[a, b] \ (1 \leq a \leq b \leq N)$,设数列中在这个下标区间中的元素的最大值为 $x$,将这个下标区间中的所有元素替换为 $x$。 2. 选出一个下标的区间 $[a, b] \ (1 \leq a \leq b \leq N)$,设数列中在这个下标区间中的元素的最小值为 $x$,将这个下标区间中的所有元素替换为 $x$。 计算出一组操作方案,使数列 $A$ 变为另一个给定的数列 $B$(也有 $N$ 个元素)。方案中操作的数列必须小于等于 $2N$。

输入格式

第一行包含一个整数 $N$。 第二行包含一个有 $N$ 个元素的数列 $A$。 第三行包含另一个有 $N$ 个元素的数列 $B$。

输出格式

如果无解,输出 $-1$。否则在第一行输出一个整数 $x$,代表将数列 $A$ 变为 $B$ 所需的最小操作数量。接下来 $x$ 行每行包含一个字符(代表操作的类型,`m ` 代表使用了最小值的操作,`M` 代表使用了最大值的操作)和一个区间 $(a,b)$,描述了所需的每次操作信息。如果有多解,任意输出一组即可。

说明/提示

- $1 \leq N \leq 100, 000$ - 数列 $A$ 和 $B$ 中的元素都是区间 $[1, N]$ 中的整数