资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
现有N个正整数,N<=10000,要求出这N个正整数中的第K个最小整数(相同大小的整数只计算一次),K<=4000,正整数均小于30000
输入格式
第1行为N和K,第2行开始为N个正整数的值,整数间用空格隔开。
输出格式
第K个最小整数的值;若无解则输出“NO RESULT”。
样例输入
10 3
1 3 3 7 2 5 1 2 4 6
样例输出
3
【要求】第二次做题必须使用快排做本题。
#include <iostream>
using namespace std;
const int N = 10010;
int q[N];
void quick_sort(int q[], int l, int r)
{
if (l >= r) return;
int x = q[(l + r) / 2];
int i = l - 1, j = r + 1;
while (i < j)
{
do ++i; while (q[i] < x);
do --j; while (q[j] > x);
if (i < j)
{
swap(q[i], q[j]);
}
}
quick_sort(q, l, j);
quick_sort(q, j + 1, r);
}
int main()
{
int n, k;
cin >> n