Pagini recente » Cod sursa (job #2467493) | Cod sursa (job #600183) | Cod sursa (job #2795203) | Cod sursa (job #373173) | Cod sursa (job #2769377)
#include <bits/stdc++.h>
using namespace std;
#define MAX 3000005
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n, k;
int v [MAX];
int mediana (int st, int dr){
int mij = (st + dr) / 2;
if (v [dr] < v [st])
swap (v [dr], v [st]);
if (v [mij] < v [st])
swap (v [mij], v [st]);
if (v [dr] < v [mij])
swap (v [dr], v [mij]);
return mij;
}
void QS (int st,int dr){
if (st < dr){
int pivot = mediana (st,dr);
swap (v [dr], v [pivot]);
int ind = st - 1;
for (int i = st; i < dr; i++)
if (v [i] < v [dr])
swap (v [++ ind], v[i]);
ind ++;
swap (v [dr], v [ind]);
if (ind == k) fout << v [ind];
else if (ind < k)QS (ind + 1, dr);
else QS (st, ind - 1);
}
fout << v [k];
}
int main(){
fin >> n >> k;
for (int i = 1; i <= n; i ++)
fin >> v [i];
QS (1, n);
return 0;
}