/**
题目描述
给定一个整数数组a[0,...,n-1],求数组中第k小数
输入描述
首先输入数组长度n和k,其中1<=n<=5000, 1<=k<=n
然后输出n个整形元素,每个数的范围[1, 5000]
输出描述
该数组中第k小数
样例输入
4 2
1 2 3 4
样例输出
2
**/
#include<iostream>
using namespace std;
int main(){
int n,k;
cin>>n>>k;
int a[n];
int b[k];
for(int i=0;i<k;i++){
b[i]=5001;
}
for(int i=0;i<n;i++){
cin>>a[i];
}
int i=0;
while(i<n){
//cout<<i<<endl;
for(int j=0;j<k;j++){
if(b[j]>=a[i]){
// then a[i] should be at the j-th pos in array b
// the element after the j-th pos in array-b will be moved forward one step
// 如果在数组b中找到b[j]大于a[i],则a[i]的数值应该被放置到数组b的第j个位置上
// 并且数组b的第j个位置中的元素应该依次顺序向后移动一位
/** 值得注意的是,这里并不出需要去重,如果在原始数组a中具有相同的元素,则它们将在数组b中重复出现 **/
for(int p=k-1;p>j;p--){
// 实现覆盖
b[p]=b[p-1];
}
b[j]=a[i];
break;
}
// 如果数组b中的所有元素都比a[i]小或者等于a[i]
// 则当前的a[i]元素对于更新数组b是没有作用的,故而跳出此次遍历,继续向后读取下一个a[i]元素
}
i+=1;
//
}
cout<<b[k-1]<<endl;
return 0;
}