Pagini recente » Cod sursa (job #1088802) | Cod sursa (job #410410) | Cod sursa (job #1739296) | Cod sursa (job #217116) | Cod sursa (job #2127555)
/*
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)];
st --; end ++;
while(true){
do { st ++; }while(a[st] < e);
do { end --; }while(a[end] > e);
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]; cin >> n;
}