列表

详情


NC207028. 第k小数

描述

给你一个长度为n的序列,求序列中第k小数的多少。

输入描述

多组输入,第一行读入一个整数T表示有T组数据。
每组数据占两行,第一行为两个整数n,k,表示数列长度和k。
第二行为n个用空格隔开的整数。

输出描述

对于每组数据,输出它的第k小数是多少。
每组数据之间用空格隔开

示例1

输入:

2
5 2
1 4 2 3 4
3 3
3 2 1

输出:

2
3

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(g++ 7.5.0) 解法, 执行用时: 2093ms, 内存消耗: 19756K, 提交时间: 2023-06-05 22:53:31

#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int t;
const int N=5e6+10;
int q[N],tmp[N];
int main() {
cin>>t;
while(t--){
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++) scanf("%d",&q[i]);
nth_element(q+1,q+k,q+n+1);
cout<<q[k]<<"\n";
}
return 0;
}

C++14(g++5.4) 解法, 执行用时: 2532ms, 内存消耗: 164128K, 提交时间: 2020-10-21 10:52:18

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

C++(clang++ 11.0.1) 解法, 执行用时: 2126ms, 内存消耗: 19612K, 提交时间: 2022-10-13 18:48:22

#include<bits/stdc++.h>
using namespace std;
const int mx=5e6+10;
int a[mx];
int main(){
	int t,n,k;
	cin>>t;
	while(t--){
		cin>>n>>k;
		for(int i=0;i<n;i++){
			scanf("%d",&a[i]);
		}
		nth_element(a,a+k-1,a+n);
		cout<<a[k-1]<<endl;
	}
} 

上一题