Cod sursa(job #2323896)

Utilizator SemetgTemes George Semetg Data 19 ianuarie 2019 22:39:59
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#define FILE_NAME "sdo"
using namespace std;

ifstream in (FILE_NAME".in");
ofstream out (FILE_NAME".out");

const int N_MAX = 3000005;

int N, poz;
unsigned a[N_MAX];

void quickSelect(int stg, int drp) {
    if (stg >= drp)
        return;
    
    int i = stg, j = drp;
    unsigned pivot = a[(stg + drp) / 2];
    
    while (i <= j) {
        while (a[i] < pivot)
            ++i;
        while (a[j] > pivot)
            --j;
        
        if (i <= j)
            swap(a[i++], a[j--]);
    }
    
    if (poz <= j)
        quickSelect(stg, j);
    else if (poz >= i)
        quickSelect(i, drp);
}

int main() {
    in >> N >> poz;
    for (int i = 1; i <= N; ++i)
        in >> a[i];
    
    quickSelect(1, N);
    out << a[poz];
}