Cod sursa(job #936668)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;
typedef vector<int>::iterator viit;
template <typename T>
bool cmp( T a, T b ) {
return a < b;
}
void Nth_element( viit begin, viit pos, viit end ) {
if (*begin == *(end-1)) return;
viit rpivot_pos = begin + rand() % ( end-begin );
int rpivot = *rpivot_pos;
iter_swap( rpivot_pos, end-1 );
viit s = begin, g = end-1;
while (s != g) {
if (cmp( *s, rpivot )) ++s;
else iter_swap( s, --g );
}
//cout << rpivot << '\n';
//for (viit it = begin; it != end; ++it) {
//cout << *it << ' ';
//}
//cout << '\n';
if (pos < s) Nth_element( begin, pos, s );
else Nth_element( g, pos, end );
}
int main() {
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n, k;
fin >> n >> k;
--k;
vector<int> a(n);
for (int i=0; i<n; ++i)
fin >> a[i];
Nth_element( a.begin(), a.begin()+k, a.end() );
fout << a[k];
return 0;
}