Pagini recente » Cod sursa (job #1667470) | Cod sursa (job #322664) | Cod sursa (job #43467) | Cod sursa (job #317119) | Cod sursa (job #2127544)
/*
ID : thoria1991
TASK : barn1
LANG : C++11
*/
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n, a[3000002], k;
int part(int st, int end, int k){
int e = a[st + rand() % (end - st + 1)];
while(true){
while(a[st] < e) st ++;
while(a[end] > e) end --;
if(st < end) swap(a[st], a[end]);
else return end;
}
}
void select(int st, int end, int k){
if(st == end) return;
int p = part(st, end, k);
int nr = p - st + 1;
if(nr >= k) select(st, p, k);
else select(p + 1, end, k - nr);
}
int main(){
fin >> n >> k;
for(int i = 1; i <= n; i ++)
cin >> a[i];
select(1, n, k);
fout << a[k];
}