Pagini recente » Cod sursa (job #2892682) | Cod sursa (job #1557357) | Cod sursa (job #3162195) | Cod sursa (job #87048) | Cod sursa (job #2676106)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin( "sdo.in" );
ofstream cout( "sdo.out" );
const int NMAX = 3e6;
int v[NMAX + 1];
void qsort1(int v[], int k, int begin, int end) {
int pivot = v[begin + rand() % (end - begin + 1)];
int b = begin, e = end;
while (v[b] < pivot)
b++;
while (v[e] > pivot)
e--;
while(b < e) {
swap(v[b], v[e]);
do
b++;
while (v[b] < pivot);
do
e--;
while (v[e] > pivot);
}
if (begin < e && k < e)
qsort1(v, k, begin, e);
else if (e + 1 < end)
qsort1(v, k, e + 1, end);
}
int main() {
int n, k, i;
cin >> n >> k;
for( i = 0; i < n; ++i )
cin >> v[i];
qsort1(v, k - 1, 0, n - 1);
cout << v[k - 1];
return 0;
}