这道题看起来简单,实则不易,对时间复杂度要求极高,需要优化输出(字符输入)和排序(方法:快速排序;范围:部分排序)。下面是我写的:
#include<cstdio>
#include<ctype.h>
#include<algorithm>
using namespace std;
int a[5000000];
void get(int &x)
{
char c;
x = 0;
while(isdigit(c = getchar()))x *= 10, x += c - '0';
}
int main()
{
int n, k;
scanf("%d%d", &n, &k);
for(int i = 0; i < n; i++)
get(a[i]);
nth_element(a , a + n - k, a + n);
printf("%d\n", a[n - k]);
return 0;
}
本人刚学习C++不久,如果有不太规范的地方,还请见谅。
版权声明:本文为zhangkuihan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。