Cod sursa(job #2983613)

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

using namespace std;

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

const int NMAX=3e6+5;

int vec[NMAX];
int n,k;

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

void qs(int begin,int end){
    if(begin>=end)
        return;
    //partition part
    int med=(begin+end)/2;
    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]);
        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();

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