Pagini recente » Cod sursa (job #2391156) | Cod sursa (job #2278733) | Cod sursa (job #2320917) | Cod sursa (job #2844117) | Cod sursa (job #2064668)
#include <cstdio>
#include <cstdlib>
using namespace std;
int k,n,v[500010];
int part_Hoare(int st, int dr)
{
int x = (rand() % (dr - st + 1) + rand() % (dr - st + 1) + rand() % (dr - st + 1)) / 3;
int i = st - 1, j = dr + 1;
int p = v[x + st];
while (1) {
do
i = i + 1;
while (v[i] < p);
do
j = j - 1;
while (v[j] > p);
if (i >= j)
return j;
int aux = v[i];
v[i] = v[j];
v[j] = aux;
}
}
void qsort(int st,int dr)
{
if(st < dr)
{
int p = part_Hoare(st,dr);
if(p==k) return;
if(p > k) qsort(st,p);
else qsort(p+1,dr);
}
}
int main()
{
int i;
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
scanf("%d",v+i);
qsort(1,n);
printf("%d",v[k]);
}