Cod sursa(job #2613880)

Utilizator ddeliaioanaaDumitrescu Delia Ioana ddeliaioanaa Data 10 mai 2020 19:59:54
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>

std::ifstream fin("sdo.in");
std::ofstream fout("sdo.out");

int n, k;
int v[3000001], L[3000001], E[3000001], G[3000001];

int quickSelect(int v[], int n, int k)
{
    int pivot = v[rand() % n];
    int l = 0, e = 0, g = 0;

    for(int i = 0; i < n; i ++)
        if(v[i] < pivot)
            L[l++] = v[i];
        else if(v[i] == pivot)
            E[e++] = v[i];
        else
            G[g++] = v[i];

    if(k <= l)
        return quickSelect(L, l, k);
    else if(k <= l + e)
        return E[0];
    else
        return quickSelect(G, g, k - l - e);
}

int main()
{
    int i, val;
    fin >> n >> k;

    for(i = 0; i < n; i++)
    {
        fin >> v[i];
    }

    fout << quickSelect(v, n, k);

    return 0;
}