Cod sursa(job #2553977)

Utilizator ShumaherAdasga Shumaher Data 22 februarie 2020 14:07:25
Problema Statistici de ordine Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");

int QuickSelect(vector<int>&Nr, int K) { // Vectorul initial, cate nr, al catelea maxim
    vector<int> L, E, G;
    int pivot = Nr[0];
    for(auto i : Nr) {
        if (i < pivot)
            L.push_back(i);
        else if (i == pivot)
            E.push_back(i);
        else
            G.push_back(i);
    }
    if (K < L.size())
        return QuickSelect(L, K);
    else if (K < L.size() + E.size())
        return E[0];
    else
        return QuickSelect(G,K - L.size() - E.size());
}

int main() {
    int N, K;
    vector<int> A;
    in >> N >> K;
    for( auto i = 0; i < N; i++) {
        int temp;
        in >> temp;
        A.push_back(temp);
    }
    out << QuickSelect(A, K-1) << endl;

}