AT_arc188_e.[ARC188E] Gravity Sort

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

在一个从上到下排成一列的 2N2N 个格子中,每个格子都有一个编号,从 11 到 2N2N。每个格子里放着一个球。在时刻 t=0t=0,编号 ii 的格子中球的重量为:若 i=1,2,…,Ni=1,2,\ldots,N,则为 mim_i;若 i=N+1,N+2,…,2Ni=N+1,N+2,\ldots,2N,则为 00。这里,(m1,m2,…,mN)(m_1, m_2, \ldots, m_N) 是 11 到 NN 的一个排列。

在接下来的时间里,重球会下沉,轻球会上浮。具体来说,给定时刻 t=t0t=t_0,我们按照以下步骤确定时刻 t=t0+1t=t_0+1 的球位置:

  1. 从 NN 至 11 依次处理:

    • 如果球 ii 在时刻 t=t0+1t=t_0+1 的位置已确定,则不进行操作。
    • 如果球 ii 在时刻 t=t0+1t=t_0+1 的位置尚未确定:
      • 若其下方的格子存在于时刻 t=t0t=t_0,且该位置球的重量小于球 ii,则交换两个位置。
      • 否则,保持球 ii 在时刻 t=t0+1t=t_0+1 的位置不变。
  2. 对于所有尚未确定位置的重量为 00 的球,保持其位置不变。

最终,在某一时刻,球将按由上到下轻重顺序排列,且此后位置不再变化。请计算实现这一状态所需的最小时刻。

输入格式

输入由以下格式给出:

NN m1m_1 m2m_2 …\ldots mNm_N

输出格式

输出一个整数表示达到最终状态的时刻。

输入输出样例

  • 输入#1

    3
    2 3 1

    输出#1

    6
  • 输入#2

    5
    4 1 2 3 5

    输出#2

    9
  • 输入#3

    1
    1

    输出#3

    1

说明/提示

  • 1≤N≤2×1051 \leq N \leq 2 \times 10^5
  • 1≤mi≤N1 \leq m_i \leq N
  • 对于 i≠ji \neq j 有 mi≠mjm_i \neq m_j

样例解释

从时刻 t=0t=0 开始,球按指令逐步调整位置,最终在时刻 t=6t=6 得到从上到下为 0,0,0,1,2,30, 0, 0, 1, 2, 3 的位置排列,并保持不变。可据图表进行理解:

示例图例

本翻译由 AI 自动生成

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

首页