Cod sursa(job #2939337)

Utilizator MAlex2019Melintioi George Alexandru MAlex2019 Data 13 noiembrie 2022 15:39:51
Problema Statistici de ordine Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("sdo.in");
ofstream fout("sdo.out");
const int maxn = 1000;
int v[maxn];

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

int main() {
    int n, k;
    fin >> n >> k;
    k--;
    for (int i = 0; i < n; i++) 
        fin >> v[i];
    fout << quicksort(0, n, k);
   

    return 0;
}