1404: 植物战僵尸

内存限制:128 MB 时间限制:1.000 S 标准输入输出
题目类型:传统 评测方式:文本比较 上传者:
提交:4 通过:3

题目描述

    植物界获悉:僵尸王培养了 1 万个僵尸原型。每个僵尸原型有一个与其它僵尸原型不同的唯一战力值。战力值的取值范围是 1~108。僵尸王用克隆方式在极短时间内将这1 万个僵尸原型克隆出几十万僵尸大军向植物界进攻!
    植物界计划使用电磁炮攻击僵尸,但只有获得了目标僵尸的战力值在所有僵尸中的排名才能消灭掉目标僵尸。假如只有三个僵尸进行战力值排名,第一个僵尸的战力值为 99,后两个僵尸的战力值为 100,那么第一个僵尸的战力值排名为 3,后两个僵尸的战力值排名均为 1。
    电磁炮需要一个高性能的排序程序,要求能在 1 秒内计算出最多 50 万个僵尸的战力值排名。
    注意:因为僵尸原型只有 1 万个,所以克隆出的僵尸们的战力值很多是相同的。
    请你为电磁炮编写这个排序程序,对于输入的 n 个僵尸的战力值,按照同一顺序输出前 k 个僵尸的战力值排名。

输入格式

    n+1 行
    第 1 行两个整数 n 和 k,n 表示僵尸的总数,k 表示输出僵尸战力值排名的数量。
    第 2 至第 n+1 行,每行一个整数表示一个僵尸的战力值。

输出格式

    若 n≤k,则输出 n 行,每行一个整数,表示 n 个僵尸的战力值排名。
    若 n>k,则输出 k 行,每行一个整数表示按输入顺序输出僵尸的战力值排名。

输入样例 复制

8 6
5
8
3
8
9
10
6
3

输出样例 复制

6
3
7
3
2
1

数据范围与提示

    样例解释:
        输入样例,僵尸战力值按降序排序后
        战力值:10 9 8 8 6 5 3 3
            排名: 1 2 3 3 5 6 7 7
        输出排序前的前 6 个僵尸战力值的排名
        战力值:5 8 3 8 9 10
            排名: 6 3 7 3 2 1
    数据规模:
        共 10 个测试数据,其中:
        40%的数据满足:1<n≤1*105 ,1<k<n≤2*104,1≤僵尸战力值≤108
        50%的数据满足:1<n≤1*105 ,1<k<n≤5*104,1≤僵尸战力值≤108
        100%的数据满足:1<n≤1.3*105 ,1<k<n≤2*105,1≤僵尸战力值≤108

分类标签