Pagini recente » Cod sursa (job #86558) | Cod sursa (job #580340) | Cod sursa (job #2855607) | Cod sursa (job #2113860) | Cod sursa (job #1263618)
#include <iostream>
#include <fstream>
#include <stdlib.h>
#define max 3000001
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
int v[max], n, k;
int prt(int left, int right)
{
int i =left-1;
int j= right+1;
int p= v[(rand()% (right-left +1) + left)];
while(1)
{
do ++i; while (v[i]<p);
do --j; while (v[j]>p);
if (i<j)
swap(v[i],v[j]);
else return j;
}
return 0;
}
void sdo (int left, int right)
{
if(left==right)
return;
int t=prt(left,right);
if(t>=k)
sdo(left, t);
else sdo(t+1, right);
}
int main()
{
int i;
fin>>n>>k;
for( i=1; i<=n; ++i)
fin>>v[i];
srand(9242342);
sdo(1, n);
fout<<v[k]<<' ';
fin.close();
fout.close();
return 0;
}