Pagini recente » Cod sursa (job #1655926) | Cod sursa (job #2798673) | Cod sursa (job #673658) | Cod sursa (job #1314111) | Cod sursa (job #1278972)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <stdlib.h>
using namespace std;
#define NMax 3000002
int a[NMax];
int n,k;
void nth(int l, int r, int k)
{
if(r-l<1) return;
else
{
int pindex= rand()%(r-l+1) + l;
int pivot=a[pindex];
int i=l,j=r;
while(i<=j)
{
while(a[i]<pivot)i++;
while(a[j]>pivot)j--;
if(i<=j)
{
swap(a[i],a[j]);
i++;
j--;
}
}
if(i>k)
nth(l,i-1,k);
else
nth(i,r,n-i+1);
}
}
int main()
{
srand(1337);
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d %d",&n,&k);
for( int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
nth(1,n,k);
// for( int i=1;i<=n;i++)
// cout<<a[i]<<" ";
cout<<a[k];
}