Pagini recente » Cod sursa (job #811255) | Cod sursa (job #2294247) | Cod sursa (job #339098) | Cod sursa (job #1300077) | Cod sursa (job #2983591)
#include<bits/stdc++.h>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
const int NMAX=3e6;
int_fast64_t vec[NMAX];
int n,k;
void citire(){
in>>n>>k;
for(int i=0;i<n;++i)
cin>>vec[i];
}
void qs(int begin,int end){
//partition part
int pivot=vec[begin+rand()%(end-begin+1)];
int b=begin,e=end;
do{
do
b++;
while(vec[b]<pivot);
do
e--;
while(vec[e]>pivot);
if(b<e)
swap(vec[b],vec[e]);
}while(b<e);
//partition part
//recall part
if(begin<e and k<=e)
qs(begin,e);
else if(e+1<end)
qs(e+1,end);
//recall part
}
int main(){
citire();
k--;
qs(0,n-1);
out<<vec[k];
}