AT_arc147_b.[ARC147B] Swap to Sort

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

现有一个11到NN的排列$ P=(P_1,P_2,\ldots,P_N) $ 。你可以重复执行以下两种操作来使PP从小到大排序。

  • 操作A:A:选择一个整数ii满足1 ≤ i ≤ N−11\ \leq\ i\ \leq\ N-1,然后交换PiP_i和Pi+1P_{i+1}。
  • 操作B:B:选择一个整数ii满足1 ≤ i ≤ N−21\ \leq\ i\ \leq\ N-2,然后交换PiP_i和Pi+2P_{i+2}。

请找出一个满足以下要求的操作序列

  • 操作AA的数量最少
  • 操作的总数不超过10510^5

在题目条件的约束下,我们可以证明合法的解总是存在的

输入格式

$ N $

$ P_1 $ $ P_2 $ $ \ldots $ $ P_N $

输出格式

设你的答案中的操作次数为SS。输出有S+1S+1行。

第一行包含整数SS

第(s+1)(1≤s≤S)(s+1)(1≤s≤S)行中应包含以下内容。

  • 如果第ss个操作为AA,输出A i,ii为此次操作选择的整数
  • 如果第ss个操作为BB,输出B i,ii为此次操作选择的整数

如果有多个合法解,输出一个即可。

样例 #1

样例输入 #1

4
3 2 4 1

样例输出 #1

4
A 3
B 1
B 2
B 2

样例 #2

样例输入 #2

3
1 2 3

样例输出 #2

0

样例 #3

样例输入 #3

6
2 1 4 3 6 5

样例输出 #3

3
A 1
A 3
A 5

输入输出样例

  • 输入#1

    4
    3 2 4 1

    输出#1

    4
    A 3
    B 1
    B 2
    B 2
  • 输入#2

    3
    1 2 3

    输出#2

    0
  • 输入#3

    6
    2 1 4 3 6 5

    输出#3

    3
    A 1
    A 3
    A 5

说明/提示

  • $ 2\ \leq\ N\ \leq\ 400 $
  • $ 1\ \leq\ P_i\ \leq\ N\ ,(1\ \leq\ i\ \leq\ N) $
  • $ P_i\ \neq\ P_j\ ,(1\ \leq\ i\ <\ j\ \leq\ N) $
  • 输入均为正数

输入解题思路,AI测评打分。不知道怎么写?

首页