Cod sursa(job #2769378)

Utilizator OctavianVasileVasileOctavian OctavianVasile Data 15 august 2021 08:10:04
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("sdo.in");
ofstream fout ("sdo.out");
vector <int> v;
int n, k, pivot, nr, ans;
int QS (int st, int dr){
    if (st < dr){
        int mij = (st + dr) / 2;
        pivot = v [mij];
        swap (v [mij], v [dr]);
        int ff = st, ind = st;
        while (ind < dr){
            if (v [ind] < pivot)
                swap(v [ff++], v [ind]);
            ind ++;
        }
        swap (v [ff], v [dr]);
        if (k < ff) return QS (st, ff - 1);
        else if (k > ff) return QS (ff + 1, dr);
        else return v [ff];
    }
    else return v [st];
}
int main (){
    fin >> n >> k; k --;
    for (int i = 0; i < n; i ++){
        fin >> nr;
        v.push_back (nr);
    }
    ans = QS (0, n - 1);
    fout << ans << '\n';
    return 0;
}