Pagini recente » Cod sursa (job #2448423) | Cod sursa (job #940650) | Cod sursa (job #595365) | Cod sursa (job #326679) | Cod sursa (job #2194455)
#if 1
#include <bits/stdc++.h>
#else
#include "includes.h"
#endif
using namespace std;
#if 1
#define pv(x) cout<<#x<<" = "<<x<<"; ";cout.flush()
#define pn cout<<endl
#else
#define pv(x)
#define pn
#endif
#ifdef ONLINE_JUDGE
#define in cin
#define out cout
#else
ifstream in("sdo.in");
ofstream out("sdo.out");
#endif
using ll = long long;
using ull = unsigned long long;
using uint = unsigned int;
#define pb push_back
#define mp make_pair
const int NMax = 2e5 + 5;
const ll inf_ll = 1e18 + 5;
const int inf_int = 1e9 + 5;
const int mod = 100003;
using zint = int;
int part(int st, int dr, int K, vector<int>& v) {
int idx = rand() % (dr - st + 1) + st;
swap(v[idx], v[dr]);
int i = st - 1;
for (int j = st; j <= dr; ++j) {
if (v[j] <= v[dr]) {
swap(v[++i], v[j]);
}
}
return i;
}
void solve(int st, int dr, int K, vector<int>& v) {
if (st >= dr) {
return;
}
int idx = part(st, dr, K, v);
if (K < idx) {
solve(st, idx - 1, K, v);
}
else {
solve(idx + 1, dr, K, v);
}
}
int main() {
cin.sync_with_stdio(false);
cin.tie(0);
int N, K;
in >> N >> K;
vector<int> v(N, 0);
for (int& val : v) {
in >> val;
}
srand(time(0));
--K;
solve(0, N-1, K, v);
out << v[K];
return 0;
}