Pagini recente » Cod sursa (job #3196406) | Cod sursa (job #2086758) | Cod sursa (job #2173770) | Cod sursa (job #826990) | Cod sursa (job #2983609)
#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){
//partition part
int med=begin+rand()%(end-begin+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];
}