大佬们麻烦看看为什么不行啊,三个WA 两个超时 测试案例可以过

P1923 【深基9.例4】求第 k 小的数

Lzm217693 @ 2024-02-25 22:09:28

include<iostream>

include<algorithm>

using namespace std; long long number[5000005]; int sequence[5000005]; int main(){ int n,k,x=0; cin>>n>>k; for(int a=0;a<n;a++){ cin>>number[a]; } sort(number,number+n); //依次排序数组的下标 sequence下标对应number的目标数下标 for(int a=1;a<n;a++){ if(number[a]>number[a-1]){ sequence[x++]=a-1; } } sequence[x]=n-1; int c=sequence[k]; cout<<number[c];

return 0;

}


by jr_linys @ 2024-02-25 22:17:05

首先超时是因为输入太慢了。

ios::sync_with_stdio(0);

用这个关闭同步流,但是就只能用 cincout 了。


by jr_linys @ 2024-02-25 22:18:22

然后也不用搞去重什么的瞎操作...

#include <iostream>
#include <algorithm>
using namespace std;
long long number[5000005];
int main() {
    ios::sync_with_stdio(0);
    int n, k;
    cin >> n >> k;
    for (int a = 0; a < n; a++)  cin >> number[a];
    sort(number, number + n); //依次排序数组的下标 sequence下标对应number的目标数下标
    cout << number[k];
}

by Lzm217693 @ 2024-02-26 15:17:21

@jr_linys 谢谢大佬的指点


|