CF2052A.Adrenaline Rush

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

爱丽丝的朋友是肾上腺素飙升赛车比赛的狂热爱好者,总是努力参加每一场比赛。然而,这一次,爱丽丝是观看比赛的人。为了确保她的朋友不会错过任何重要的细节,爱丽丝决定记下赛道上发生的每一件事。

比赛开始前,爱丽丝注意到的第一件事是汽车的编号。所有的汽车都按照特定的顺序在起跑线前排成一列。最靠近这条线的车编号为 11,第二辆车编号为 22,以此类推,直到最后一辆车编号为 nn。多方便啊!爱丽丝想。

比赛开始倒计时:“三!二!一!出发!”。爱丽丝注意到汽车是按原来的顺序出发的。然而,随着比赛的进行,他们的顺序发生了变化。每当一辆车超越另一辆车时,她都会记录下来,本质上就是在赛道上与它交换位置。

在比赛中,爱丽丝注意到一件奇怪的事情:没有一辆车超过另一辆车一次以上。换句话说,对于任意两辆车 xx 和 yy,在比赛中它们之间最多有两次超车:“xx 超过 yy”和/或“yy 超过 xx”。

在比赛结束时,爱丽丝仔细地写下汽车 c1,c2,…,cnc_1,c_2,…,c_n 的最终顺序,其中 c1c_1 代表比赛的获胜者。

然而,爱丽丝的朋友只对最终的排名感兴趣,并丢弃了爱丽丝的所有笔记,除了最终的顺序。爱丽丝很好奇,她想知道:她在比赛中观察到的最长超车次数是多少?你的任务是帮助爱丽丝回答这个问题。

输入格式

输入的第一行包含一个整数 n(1≤n≤1000)n(1≤n≤1000),用于表示比赛中的汽车数量。

第二行包含一个排列 c1,c2,…,cn(1≤ci≤n,ci≠cj)c_1,c_2,…,c_n(1≤c_i≤n,c_i≠c_j) 用于表示汽车的最终顺序。

输出格式

输出的第一行应该包含一个整数 mm,用于表示在比赛中可能出现的最大超车次数。

接下来的 mm 行中的每一行都包含两个整数 xx 和 y(1≤x,y≤n,x≠y)y(1≤x,y≤n,x≠y),表示超车事件,其中汽车 xx 超过了汽车 yy。这意味着汽车 xx 正好在汽车 yy 后面,并超过了它。超车必须按照比赛中发生的顺序排列。

在所有的 mm 次超车之后,汽车必须按照 c1,c2,…,cnc_1,c_2,…,c_n的顺序到达终点线。注意,任何汽车 xx 都不应超过另一辆汽车 yy 一次以上。

如果存在多个可能的最长超车序列,则输出其中任何一个。\\
——By hyacinth_lpy.

输入输出样例

  • 输入#1

    3
    2 3 1

    输出#1

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

    1
    1

    输出#2

    0
  • 输入#3

    2
    1 2

    输出#3

    2
    2 1
    1 2

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

首页