Cod sursa(job #2983611)

Utilizator alex_dacDumitrascu Constantin Alexandru alex_dac Data 22 februarie 2023 17:28:14
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include<bits/stdc++.h>

using namespace std;

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

const int NMAX=3e6;

int_fast8_t vec[NMAX];
int n,k;

void citire(){
    in>>n>>k;
    for(int i=0;i<n;++i)
        in>>vec[i];
}

void qs(int begin,int end){
    if(begin>=end)
        return;
    //partition part
    int med=(begin+end)>>1;
    int ff=begin;
    swap(vec[end],vec[med]);
    for(int i=begin;i<end;i++)
        if(vec[i]<vec[end])
            swap(vec[i],vec[ff++]);
    swap(vec[end],vec[ff]);
    //partition part

    //recall part
    if(ff==k)
        return;
    if(ff>k)
        qs(begin,ff-1);
    if(ff<k)
        qs(ff+1,end);
    //recall part
}

int main(){
    citire();

    k--;
    n--;
    qs(0,n);
    out<<vec[k];
}