目前我们已经进入了大数据(Big Data)时代,所需要处理的数据规模越来越大,不幸的是,领导交给你的机器仍然是一台老旧的电脑,其内存之低令人发指。不过领导要求你完成的任务却很严苛:希望能在海量的数据中,选出他希望的值。
具体来说,他给了你一块装有大量数据的磁盘,每个数据只包括一个int类型(有符号32bit整数),现在他希望你从中选出最大的k个,这本来是一个简单的任务,不过考虑到受限的内存,简单的任务也变得复杂起来。
输入
为了加快输入输出速度,输入文件采用二进制格式存储。前两个数字n和k,表示你需要从n个数字中选出最大的k个。之后随即连续存储了n个整数。
输出
输出包括k行,依次为从大到小的最大的k个数字,考虑到输入中的数字可能相同,这里输出的数字也可能相同。
输入样例
6
3
1
4
-5
1
4
-2
特别注意:实际输入均为二进制文件,所有数据连续存储,并没有行的概念。
输出样例
4
4
1
限制
1 <= n <= 10,000,000
1 <= k <= 50,000
k <= n
时间:3 sec
空间:13MB
欢迎交流