Cod sursa(job #2553841)

Utilizator Briana_NeaguNeagu Briana Briana_Neagu Data 22 februarie 2020 12:22:18
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("sdo.in");
ofstream g("sdo.out");

vector <int> a;
int quickSort(int left, int right, const int k)
{
    if (left >= right)
    {
        if (left == right)
            return a[left];
        assert(false);
      //  return -1;
    }
    int pivotPos = left + (rand() % (right - left + 1));
    int pivot = a[pivotPos];
    swap(a[right], a[pivotPos]);
    int less = left;
    for (int i = left; i < right; ++ i)
        if (a[i] < pivot)
        {
            swap(a[i], a[less]);
            less ++;
        }
    swap(a[less], a[right]);
    if (less == k)
        return a[less];
    if (k < less)
        return quickSort(left, less - 1, k);
    else
        return quickSort(less + 1, right, k);
}

int main()
{
    int n, k;
    f >> n >> k;
    a.resize(n + 1);
    srand(time(NULL));
    for (int i = 1; i <= n; ++ i)
        f >> a[i];
    g << quickSort(1, n, k);
}