Vjudge攻略——ACdream-1099

  • Post author:
  • Post category:其他


这道题看起来简单,实则不易,对时间复杂度要求极高,需要优化输出(字符输入)和排序(方法:快速排序;范围:部分排序)。下面是我写的:

#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 版权协议,转载请附上原文出处链接和本声明。