CF339E Three Swaps

题目描述

赛妮娅是一位养马人,她有 $n$ 匹马 $ (n>1) $,这些马站成一排。每匹马都有自己独特的编号。最初,第 $i$ 匹从左到右的马的编号为 $i$。也就是说,马匹的编号序列(从左到右)为:1, 2, 3, $...$,$n$。 赛妮娅在表演前训练这些马。训练期间,她连续多次下达指令。每条指令由一对数字 $l, r$ $ (1 \leq l < r \leq n) $ 组成。指令 $l, r$ 的意思是将第 $l$ 匹至第 $r$ 匹马(含两端)反转顺序。即,最初在第 $l$ 位置和第 $r$ 位置的马交换,$(l+1)$ 位置和 $(r-1)$ 位置的马交换,以此类推。换句话说,区间 $[l,r]$ 上的马的顺序将被完全反转。 例如,如果赛妮娅的指令是 $l=2, r=5$,原本马匹编号为 $(2, 1, 3, 4, 5, 6)$,则指令后,编号变为 $(2, 5, 4, 3, 1, 6)$。 我们知道在训练过程中,赛妮娅至多下达了三次上述类型的指令。现在你得到了训练结束后马匹编号的最终序列。请你找出赛妮娅在训练过程中下达的指令。注意,你不必让指令条数最少,找到任意一种不超过三次指令的合法方案即可。

输入格式

第一行包含一个整数 $n$ $ (2 \leq n \leq 1000) $,表示马的数量。第二行包含 $n$ 个不同的整数 $a_1, a_2, \ldots, a_n$ $ (1 \leq a_i \leq n) $,其中 $a_i$ 表示训练结束后第 $i$ 匹马的编号。

输出格式

第一行输出一个整数 $k$ $ (0 \leq k \leq 3) $,表示赛妮娅下达的指令数。接下来每行输出两个整数。在第 $i$ 行输出 $l_i, r_i$ $ (1 \leq l_i < r_i \leq n) $,表示赛妮娅第 $i$ 次下达的指令。 保证一定存在解。如果有多种方案,可以输出任意一个。

说明/提示

由 ChatGPT 5 翻译