Cod sursa(job #1659375)

Utilizator vladdy47Bucur Vlad Andrei vladdy47 Data 22 martie 2016 10:38:09
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
# include <bits/stdc++.h>

using namespace std;

const int Nmax = 3000000 + 10;

int n, k, sol;
int a[Nmax];

void quicks(int left, int right) {
    if(left < right) {
        swap(a[right], a[left + rand()%(right - left + 1)]);

        int j = left - 1, pivot = a[right];

        for (int i = left; i <= right; ++i)
            if (a[i] <= pivot) swap(a[++j], a[i]);

        if (j > k) quicks(left, j - 1);
                else quicks(j + 1, right);
    }
}

int main ()
{
    freopen("sdo.in","r",stdin);
    freopen("sdo.out","w",stdout);

    srand(time(0));
    scanf("%d %d\n", &n, &k);

    for (int i = 1; i <= n; ++i)
        scanf("%d ", &a[i]);

    quicks(1, n);

    printf("%d\n", a[k]);

    return 0;
}