Pagini recente » Cod sursa (job #350367) | Cod sursa (job #2876266) | Cod sursa (job #2587652) | Cod sursa (job #896279) | Cod sursa (job #3153680)
#include <fstream>
#include <ctime>
using namespace std;
ifstream cin("sdo.in");
ofstream cout("sdo.out");
int v[3000001];
int part(int v[], int st, int dr)
{
int i,j,mij=v[st+rand()%(dr-st+1)];
for(i=st-1,j=dr+1;;)
{
i++;
j--;
while(v[i]<mij)
i++;
while(v[j]>mij)
j--;
if(i>=j)
return j;
swap(v[i],v[j]);
}
}
void qsort(int st, int dr, int k)
{
if(st<dr)
{
int p=part(v,st,dr);
if(p>=k)
qsort(st,p,k);
else
qsort(p+1,dr,k);
}
}
int main()
{
srand(time(0));
int n,i,k;
cin>>n>>k;
for(i=1;i<=n;i++)
cin>>v[i];
qsort(1,n,k);
cout<<v[k];
return 0;
}