Cod sursa(job #3141428)

Utilizator BorodiBorodi Bogdan Borodi Data 13 iulie 2023 22:43:25
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <algorithm>
using namespace std;

int n, V[3000001];

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

int Nth_element(int V[], int st, int dr, int k){
    if(st <= dr){
        int position = dr;
        int pivot = V[position];
        int i = st - 1;

        for(int j = st; j < dr; ++j)
            if(V[j] <  pivot){
                i++;
                swap(V[i], V[j]);
            }

        swap(V[i + 1], V[position]);

        if(i + 1 == k)
            return V[i + 1];
        else    
            if(i + 1 > k)
                return Nth_element(V, st, i, k);
            else
                return Nth_element(V, i + 2, dr, k);
    }
    return 0;
}
int main()
{
    int n, k;

    fin >> n >> k;
    
    for(int i = 1; i <= n; ++i){
        fin >> V[i];
    }
    fout << Nth_element(V, 1, n, k);
}