Cod sursa(job #2080882)

Utilizator xkz01X.K.Z. xkz01 Data 3 decembrie 2017 16:43:56
Problema Statistici de ordine Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int a[500002], 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;
}