Pagini recente » Cod sursa (job #2268241) | Cod sursa (job #769859) | Cod sursa (job #1927341) | Cod sursa (job #394919) | Cod sursa (job #1111371)
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
#define cout g
ifstream f("sdo.in");
ofstream g("sdo.out");
int n,i,k,v[3000001];
int pivot(int i,int j)
{
--i;++j;
int p=i+rand()%(j-i+1);
while (1)
{
do ++i; while (v[i]<v[p]);
do --j; while (v[j]>v[p]);
if(i<j) swap(v[i],v[j]);
else return j;
}
}
void quickselect(int st,int dr,int k)
{
if (st>=dr)
{
return ;
}
else
{
int p=pivot(st,dr);
if (k<=p-st+1) quickselect(st,p,k);
else quickselect(p+1,dr,k-(p-st+1));
}
}
int main()
{
srand(time(0));
f>>n>>k;
for(i=1; i<=n; ++i) f>>v[i];
quickselect(1,n,k);
cout<<v[k];
return 0;
}