Pagini recente » Cod sursa (job #2607634) | Cod sursa (job #2623516) | Cod sursa (job #3179788) | Cod sursa (job #3238826) | Cod sursa (job #2607672)
#include <bits/stdc++.h>
using namespace std;
#define N 3000010
int n, k, a[N];
int rearrange(int l, int r){
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
swap(a[r], a[l + rng() % (r - l + 1)]);
int x = a[r], st = l;
for (int i=l; i<r; i++)
if (a[i] <= x) swap(a[i], a[st++]);
swap(a[r], a[st]);
return st;
}
int k_th_element(int l, int r, int k){
int index = rearrange(l, r);
if (index == k) return a[index];
if (k > index)
return k_th_element(index + 1, r, k);
return k_th_element(l, index - 1, k);
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
ifstream cin ("sdo.in");
ofstream cout ("sdo.out");
cin >> n >> k;
for (int i=1; i<=n; i++) cin >> a[i];
cout << k_th_element(1, n, k);
return 0;
}