Pagini recente » Cod sursa (job #1928160) | Cod sursa (job #591984) | Cod sursa (job #2320756) | Cod sursa (job #741403) | Cod sursa (job #373461)
Cod sursa(job #373461)
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
ifstream fi("sdo.in");
ofstream fo("sdo.out");
int N,A[3000010],k;
void kth_elem(int p,int u){
int start=p,end=u;
int pivot=A[p+rand()%(u-p+1)];
while (start<end){
while (A[start]<pivot) ++start;
while (A[end]>pivot) --end;
if (start<end) swap(A[start],A[end]);
}
++start;--end;
if (k<=end) kth_elem(p,end);
else if (k>=start) kth_elem(start,u);
}
int main(){
srand(time(NULL));
fi>>N>>k;
for (int i=1;i<=N;++i) fi>>A[i];
kth_elem(1,N);
fo<<A[k];
fi.close();fo.close();
return 0;
}