Pagini recente » Cod sursa (job #3140059) | Cod sursa (job #2383962) | Cod sursa (job #905704) | Cod sursa (job #556854) | Cod sursa (job #3237861)
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
ifstream fin( "sdo.in" );
ofstream fout( "sdo.out" );
const int DIM = 3e6;
int v[DIM];
int qselect( int l, int r, int k ) {
if ( l >= r ) {
return v[k];
}
int p = v[l + rng() % (r - l + 1)];
int st = l, dr = r;
while ( v[st] < p ) ++st;
while ( v[dr] > p ) --dr;
while ( st < dr ) {
swap(v[st], v[dr]);
while ( v[++st] < p );
while ( v[--dr] > p );
}
if ( k <= dr ) {
return qselect(l, dr, k);
}
return qselect(dr + 1, r, k);
}
int main() {
ios_base::sync_with_stdio(0);
fin.tie(0);
int n, k;
fin >> n >> k;
for ( int i = 0; i < n; ++i ) {
fin >> v[i];
}
fout << qselect(0, n - 1, k - 1);
fin.close();
fout.close();
return 0;
}