Pagini recente » Cod sursa (job #2376927) | Cod sursa (job #966345) | Cod sursa (job #1806544) | Cod sursa (job #1216891) | Cod sursa (job #1941185)
#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 pivot(int left, int right)
{
int i=left, j=right, x=v[left];
x=v[i];
while (i<j)
{
while (i<j && v[j]>x) --j;
v[i]=v[j];
while (i<j && v[i]<=x) ++i;
v[j]=v[i];
}
v[i]=x;
return i;
}
void quickSelect(int left, int right, int k)
{
if (left==right) return;
int x=pivot(left,right);
int p=x-left+1;
if (p>=k) quickSelect(left,p,k);
else quickSelect(p+1,right,k-p);
}
int main()
{
//srand(time(NULL));
fin>>n>>k;
for (int i=1; i<=n; ++i)
fin>>v[i];
quickSelect(1,n,k);
fout<<v[k];
return 0;
}