Cod sursa(job #2943704)

Utilizator SkaduweePavel Bogdan Stefan Skaduwee Data 21 noiembrie 2022 15:44:44
Problema Statistici de ordine Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <cstdlib>

using namespace std;

#define NMAX 500000
int v[NMAX], h[NMAX], k;
void QSORT(int st, int dr)
{
    int s = st, d = dr;
    int pivot = v[st + rand()%(dr - st + 1)];

    while (v[s] < pivot)
        s++;
    while (v[d] > pivot)
        d--;
    while (s < d)
    {
        swap (v[s], v[d]);

        do
        s++;
        while (v[s] < pivot);

        do
        d--;
        while (v[d] > pivot);
    }

    if (st < d && k < d)
    QSORT(st, d);
    else if (d+1 < dr)
    QSORT(d+1, dr);
}

int main()
{
    ifstream fin("sdo.in");
    ofstream fout("sdo.out");

    int n;
    fin >> n >> k;
    k--;
    for (int i = 0; i < n; i++)
        fin >> v[i];

    QSORT(0, n-1);

    fout << v[k];
}