记录编号 563907 评测结果 AAAAAAAAAA
题目名称 第k大数 最终得分 100
用户昵称 Gravataryrtiop 是否通过 通过
代码语言 C++ 运行时间 2.454 s
提交时间 2021-09-14 21:31:54 内存使用 32.45 MiB
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = 10000005;
int a[maxn],n,k;
int qsort(int l,int r,int k) {
	if(l >= r)return a[l];
	int i = l,j = r,base = a[l];
	while(i < j) {
		while(i < j&&a[j] <= base)-- j;
		while(i < j&&a[i] >= base)++ i;
		if(i <= j) {
			swap(a[i] , a[j]);
		}
	}
	int x = i - l + 1;
	swap(a[l] , a[i]);
	if(x >= k)return qsort(l , i , k);
	else return qsort(i + 1 , r , k - x);
}
int main() {
	freopen("nok.in","r",stdin);
	freopen("nok.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i = 1;i <= n;++ i) {
		scanf("%d",&a[i]);
	}
	printf("%d\n",qsort(1 , n , k));
	fclose(stdin);
	fclose(stdout);
	return 0;
}