Pagini recente » Cod sursa (job #2967746) | Cod sursa (job #2856660) | Cod sursa (job #2999065) | Cod sursa (job #3313676) | Cod sursa (job #3335083)
#include <bits/stdc++.h>
#define cin fin
#define cout fout
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
const int MAXN = 3000000;
int n, k;
int a[MAXN + 5];
int partition(int left, int right) {
int pivot = a[(left + right) / 2];
int i = left, j = right;
while (i <= j) {
while (a[i] < pivot) i++;
while (a[j] > pivot) j--;
if (i <= j) {
swap(a[i], a[j]);
i++;
j--;
}
}
return i;
}
void quickselect(int left, int right, int k) {
if (left >= right)
return;
int index = partition(left, right);
if (k < index)
quickselect(left, index - 1, k);
else
quickselect(index, right, k);
}
int main() {
cin >> n >> k;
for (int i = 0; i < n; i++)
cin >> a[i];
quickselect(0, n - 1, k - 1);
cout << a[k - 1] << "\n";
return 0;
}