Pagini recente » Cod sursa (job #2194396) | Cod sursa (job #2477374) | Cod sursa (job #93596) | Cod sursa (job #352988) | Cod sursa (job #2127545)
/*
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 ++)
fin >> a[i];
select(1, n, k);
fout << a[k];
}