Cod sursa(job #3274671)

Utilizator lorenazLorena Zavelca lorenaz Data 8 februarie 2025 09:38:38
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>

using namespace std;

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

int v[3000005];

int get_pivot (int left, int right)
{
    int pivot = right;
    int i = left;
    for (int j = left; j < right; j++)
    {
        if (v[j] <= v[pivot])
        {
            swap (v[i], v[j]);
            i++;
        }
    }
    swap(v[pivot], v[i]);
    pivot = i;
    return pivot;
}
int quick_sort (int left, int right, int k)
{
    if (left == right)
        return v[left];
    int pivot = get_pivot (left, right);
    int index = pivot - left + 1;
    if (index == k)
        return v[index];
    if (index < k)
        quick_sort (index+1, right, k - index);
    else
        quick_sort (left, index-1, k);
}
int main()
{
    int n, k;
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
        fin >> v[i];
    fout << quick_sort (1, n, k);
    return 0;
}