Cod sursa(job #2462389)

Utilizator paul_danutDandelion paul_danut Data 27 septembrie 2019 11:12:25
Problema Statistici de ordine Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
#include <vector>

using VectorIterator = std::vector<long>::iterator;
using Vector = std::vector<long>;

VectorIterator compare(VectorIterator left, VectorIterator right)
{
    VectorIterator pivot = right;
    while(left < pivot)
    {
        while(*left > *pivot)
        {
            std::swap(*left, *(pivot - 1));
            std::swap(*(pivot-1), *pivot);
            --pivot;
        }
        ++left;
    }

    return pivot;
}

void quickSort(VectorIterator left, VectorIterator right)
{
    if( left < right )
    {
        VectorIterator pivot = compare(left, right);
        quickSort(left, pivot - 1);
        quickSort(pivot + 1, right);
    }
}

void quickSort(Vector& v)
{
    quickSort(v.begin(), v.end()-1);
}

int main()
{
    std::ifstream fin("sdo.in");
    std::ofstream fout("sdo.out");
    int n=0, k=0, i=0;
    long x=0;
    fin>>n>>k;

    Vector v;
    for(i=0; i<n ; ++i){
        fin>>x;
        v.push_back(x);
    }

    quickSort(v);
    fout<<v[k-1];

    return 0;
}