Pagini recente » Cod sursa (job #659846) | Clasament clasa_a_19 | Monitorul de evaluare | Cod sursa (job #1641696) | Cod sursa (job #2080887)
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int a[3000001], n, k;
int partyyy(int st, int dr){
int pivot=a[st+rand()%(dr-st+1)], i=st-1, j=dr+1;
while(true){
do ++i; while (a[i]<pivot);
do --j; while (a[j]>pivot);
if (i>=j) return j;
swap(a[i],a[j]);
}
}
void quicksort(int st, int dr){
int p;
if (st<dr) {
p=partyyy(st, dr);
if (k<=p) quicksort(st, p);
else quicksort(p+1, dr);
}
}
int main(){
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d%d\n", &n, &k);
for (int i=1;i<=n;i++) scanf("%d", &a[i]);
quicksort(1,n);
printf("%d\n", a[k]);
return 0;
}