Cod sursa(job #2753317)

Utilizator matei.tudoseMatei Tudose matei.tudose Data 22 mai 2021 13:33:33
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <vector>
using namespace std;

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

vector<int> numere;
int k;

int quicksort(int st, int dr)
{
    if (st < dr)
    {
        int med = (st + dr) / 2;
        int pivot = numere[med];
        swap(numere[med], numere[dr]);
        int firstFree = st;
        int i = st;
        while (i < dr)
        {
            if (numere[i] < pivot)
            {
                swap(numere[firstFree++], numere[i]);
            }
            i++;
        }
        swap(numere[firstFree], numere[dr]);
        if (k < firstFree)
            return quicksort(st, firstFree - 1);
        else if (k > firstFree)
            return quicksort(firstFree + 1, dr);
        else
            return numere[firstFree];
    }
    else
        return numere[st];
}

int main()
{
    int n;
    fin >> n >> k;
    k--;
    for (int i = 0; i < n; i++)
    {
        int numar;
        fin >> numar;
        numere.push_back(numar);
    }
    int valoare = quicksort(0, n - 1);
    fout << valoare << "\n";
    return 0;
}