机器人马拉松
题号:NC53323
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

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

输入描述:

第一行:n,p,p=1或2,1表示你需要求出最好名次,2表示你需要求出最差名次。
第二行:

输出描述:

输出n行。每行包含一个整数,表示第i个选手的最好名次或最差名次。
示例1

输入

复制
5 1
8 5 5 7 7

输出

复制
3
1
1
2
1
示例2

输入

复制
5 2
8 5 5 7 7

输出

复制
5
3
2
4
5

备注:

对于全部的测试样例

CC-BY-SA,感谢LOJ分享,译文来自 https://loj.ac/problem/2849