Pagini recente » Cod sursa (job #363804) | Cod sursa (job #2509347) | Cod sursa (job #2886643) | Cod sursa (job #2236713) | Cod sursa (job #1942016)
#include <fstream>
#include <ctime>
#include <cstdlib>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int a[3000001],n,k,i;
int divide(int p, int q)
{
int st=p,dr=q,x=a[p+rand()%(q-p+1)];
while (st<dr)
{
while (st<dr&&a[dr]>=x)
dr--;
a[st]=a[dr];
while (st<dr&&a[st]<=x)
st++;
a[dr]=a[st];
}
a[st]=x;
return st;
}
void qs(int p, int q)
{
int m=divide(p,q);
if (k==m)
{
return;
}
if (k<m)
qs(p,m-1);
else
qs(m+1,q);
}
int main()
{
srand(time(NULL));
fin >> n >> k;
for (i=1; i<=n; i++)
fin >> a[i];
qs(1,n);
fout << a[k] << '\n';
}