Pagini recente » Cod sursa (job #468830) | Cod sursa (job #676275) | Cod sursa (job #16454) | Cod sursa (job #1048120) | Cod sursa (job #1935149)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
#define maxN 3000003
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n,k,v[maxN];
int getKthElement(int left, int right, int k)
{
while (left<right)
{
int p=left, q=right, pivot=v[p+rand()%(q-p+1)];
while (p<q)
{
if (v[p]>=pivot) { swap(v[p],v[q]); --q; }
else ++p;
}
if (v[q]>pivot) --q;
if (k<=q) right=q;
else left=q+1;
}
return v[k];
}
int main()
{
srand(time(NULL));
fin>>n>>k;
for (int i=1; i<=n; ++i)
fin>>v[i];
fout<<getKthElement(1,n,k);
return 0;
}