P9292 [ROI 2018] Robomarathon

题目背景

译自 [ROI 2018 Day2](https://neerc.ifmo.ru/school/archive/2017-2018.html) T3. [Робомарафон](https://neerc.ifmo.ru/school/archive/2017-2018/ru-olymp-roi-2018-day2.pdf) ([Robomarathon](https://codeforces.com/gym/102154/problem/D))。

题目描述

有 $N$ 名机器人选手参加马拉松,选手的编号分别为 $1\ldots N$。跑道包含 $N$ 条分道,编号分别为 $1\ldots N$。每位选手占据一条分道,$i$ 号选手(简称 $i$ 号)占据编号为 $i$ 的分道(简称 $i$ 道)。每条分道从起点到终点的路程均相同。已知 $i$ 号跑完全程需要 $a_i$ 秒。 每条分道的起始点有一个发令喇叭,不过不是播声音的。裁判皮了一下,把有些分道上的发令喇叭关掉了。 时辰一到,所有开着的发令喇叭会同时发出起跑信号(下文简称发炮)。如果 $i$ 道上发炮,$i$ 号会立即起跑。 发令信号的传递速度为每秒钟 $1$ 道。举个例子,如果有且只有四道上发炮,那么一秒后三号和五号会收到信号并立即起跑;两秒后二号和六号会收到信号并立即起跑。假设 $i$ 号在第 $x_i$ 秒起跑,则他会在第 $f_i = a_i + x_i$ 秒冲线。 我们按照冲线顺序给选手排名。比如,如果 $n=3$, $f_1= f_2= 4$,$f_3= 5$, 那么一号和二号并列第一,三号屈居第三。 可见,选手的排名取决于发令喇叭的开关状态。请求出每位选手的最好名次或最差名次。

输入格式

第一行:$n$,$p$。 接下来一行 $n$ 个数,表示 $a_1$,$a_2 \ldots a_n$。

输出格式

如果 $p=1$,输出最好名次。 如果 $p=2$, 输出最差名次。

说明/提示

对于所有数据,$1 \leq n \leq 4 \times 10^5$,$0\leq a_i \leq 10^9$。 | 子任务编号 | $n$ | $p$ | | :-----------: | :-----------: | :-----------: | | $1$ | $1 \leq n \leq 20$ | $p = 1$ | | $2$ | $1 \leq n \leq 20$ | $p = 2$ | | $3$ | $1 \leq n \leq 4 \times 10^5$ | $p = 1$ | | $4$ | $1 \leq n \leq 4 \times 10^5$ | $p = 2$ | 其中,Subtask 3 和 4 内的每个测试点 1 分,加和计算。