Pagini recente » Cod sursa (job #2773549) | Cod sursa (job #2348248) | Cod sursa (job #1299152) | Cod sursa (job #979337) | Cod sursa (job #2699735)
#include <fstream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
ifstream cin ("sdo.in");
ofstream cout ("sdo.out");
int v[3000001], n, k, aux[3000001];
void Quick (int left,int right)
{
if (left>=right)
{
return;
}
int ok=1;
for (int i=left+1; i<=right; i++)
{
if (v[i]!=v[i-1])
{
ok=0;
break;
}
}
if (ok==1)
{
return;
}
int x=rand()%(right-left+1)+left;
int nr=0,cp;
for (int i=left; i<=right; i++)
{
if (v[i]<=v[x])
{
aux[++nr]=v[i];
}
}
cp=nr;
for (int i=left; i<=right; i++)
{
if (v[i]>v[x])
{
aux[++nr]=v[i];
}
}
for (int i=1; i<=nr; i++)
{
v[left+i-1]=aux[i];
}
if (k<left+cp)
{
Quick(left,left+cp-1);
}
else
{
Quick(left+cp,right);
}
}
int main()
{
cin >> n >> k;
for (int i=1; i<=n; i++)
{
cin >> v[i];
}
srand(time(0));
Quick(1,n);
cout << v[k];
return 0;
}