Pagini recente » Cod sursa (job #1486075) | Cod sursa (job #2673329) | Cod sursa (job #60596) | Cod sursa (job #613921) | Cod sursa (job #2142146)
#include<iostream>
#include<cstdlib>
#include<time.h>
#include<algorithm>
#include<vector>
using namespace std;
int partition(vector<int> &A, int start, int end) {
int p = start + rand() % (end - start + 1);
int aux = A[p]; A[p] = A[end]; A[end] = aux;
int i = start;
for (int j = start; j < end; j++) {
if (A[j] < A[end]) {
aux = A[i]; A[i] = A[j]; A[j] = aux;
i++;
}
}
aux = A[i]; A[i] = A[end]; A[end] = aux;
return i;
}
int sdo(vector<int> &A, int K, int start, int end) {
int p = partition(A, start, end);
if (p == K) return p;
if (p < K) return sdo(A, K, p + 1, end);
return sdo(A, K, start, p - 1);
}
int main() {
freopen("sdo.in", "r", stdin);
freopen("sdo.out", "w", stdout);
srand(time(0));
int N, K;
cin>>N>>K;
vector<int> A(N);
for (int i = 0; i < N; i++) {
cin >> A[i];
}
cout << A[sdo(A, K-1, 0, N-1)];
return 0;
}