Pagini recente » Cod sursa (job #28126) | Cod sursa (job #2161830) | Cod sursa (job #359725) | Cod sursa (job #711327) | Cod sursa (job #2983612)
#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]);
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];
}