题目来源:中山纪念中学

题目描述:

小h和小R正在看之前的期末&三校联考成绩,小R看完成绩之后很伤心,共有n(n<=5*1000000)个学生,第i个学生有一个总成绩Xi(0<=Xi<=10^5),因为他的排名是倒数第k(1<=k<=n)个,于是小R想知道那些成绩比他低(包括成绩和他一样)的同学的成绩,这样能让他没那么伤心。

输入:

第一行,n和k,表示有n个学生,小R排倒数第k.
第二行,n个非负整数,表示这n个学生的成绩。

输出:

一行,共k个数,从小到大输出。(相同成绩按不同排名算)

输入样例:

5 3
1 1 2 2 3

输出样例:

1 1 2

思路:

看输出,一共k个数,那么直接把分数从小到大排个序,然后输出前k个就行了,不要想太多,不要想太多…

AC 代码:

(这么短的代码都不好意思贴出来哈哈哈)

#include<bits/stdc++.h>
using namespace std;
int n,k,a[5000010];
int main()
{
	scanf("%d%d",&n,&k);
	for (int i=1;i<=n;i++) scanf("%d",&a[i]);
	sort(a+1,a+1+n);
	for (int i=1;i<=k;i++) printf("%d ",a[i]);
	return 0;
}

镇楼: