Cod sursa(job #2614798)

Utilizator denisa.iordacheIordache Denisa-Elena denisa.iordache Data 12 mai 2020 18:12:55
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <random>
#include <vector>
using namespace std;
vector<long> L, E, G,v;
int k,n;

int quickselect(vector<long>v,int k)
{
    long pivot=v[rand()%n];
    L.clear();
    E.clear();
    G.clear();
    for(int i=0;i<v.size();i++)
        {if(v[i]<pivot)
            L.push_back(v[i]);
    else
        if(v[i]==pivot) E.push_back(v[i]);
    else
        G.push_back(v[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()
{
    ifstream f("sdo.in");
    ofstream g("sdo.out");
    f>>n>>k;
    long val;
    for(int i=0;i<n;i++)
    {
        f>>val;
        v.push_back(val);
    }
    cout<<quickselect(v,k-1);

    return 0;
}