Pagini recente » Cod sursa (job #3148014) | Cod sursa (job #2395808) | Cod sursa (job #47724) | Cod sursa (job #2890617) | Cod sursa (job #2300730)
#include <bits/stdc++.h>
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
int n, k;
vector< int > a;
int partition(int left, int right) {
int pivotPoz = left + rand() % (right - left + 1);
int pivot = a[pivotPoz], i = left - 1;
swap(a[right], a[pivotPoz]);
for (int j = left; j < right; ++j) {
if (a[j] < pivot) {
++i;
swap(a[i], a[j]);
}
}
swap(a[i + 1], a[right]);
return i + 1;
}
void quickSort(int left, int right) {
if (left < right) {
int pivot = partition(left, right);
if (k < pivot) {
quickSort(left, pivot - 1);
}
if (k > pivot) {
quickSort(pivot + 1, right);
}
}
}
int main() {
ios::sync_with_stdio(false); in.tie(0); out.tie(0);
srand(time(NULL));
in >> n >> k;
a.resize(n + 1);
for (int i = 1; i <= n; ++i) in >> a[i];
quickSort(1, n);
out << a[k] << "\n";
in.close(); out.close();
return 0;
}