Cod sursa(job #3031017)

Utilizator anamariatoaderAna Toader anamariatoader Data 18 martie 2023 11:59:54
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
#include <algorithm>
#include <vector>

using namespace std;

void quicksort(int *v, int left, int right, int k)
{
    if (left == right)
        return;

    int mid = left + (right - left) / 2;
    int pivot = v[mid], j = left;

    // temporarily place pivot at the end
    swap(v[mid], v[right]);

    for (int i = left; i < right; i++)
        if (v[i] < pivot) {
            swap(v[j], v[i]);
            j++;
        }

    swap(v[j], v[right]);

    if (j == k)
        return;

    if (j < k)
        quicksort(v, j + 1, right, k);
    else
        quicksort(v, left, j - 1, k);
}

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

    int n, k;
    fin >> n >> k;

    int *v = (int*) malloc(n * sizeof(int));
    if (!v) return -1;

    for (int i = 0; i < n; i++)
        fin >> v[i];

    quicksort(v, 0, n - 1, k - 1);

    fout << v[k - 1];

    return 0;
}