Pagini recente » Cod sursa (job #1661342) | Cod sursa (job #1111442) | Cod sursa (job #3282988) | Cod sursa (job #2988713) | Cod sursa (job #2553841)
#include <bits/stdc++.h>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
vector <int> a;
int quickSort(int left, int right, const int k)
{
if (left >= right)
{
if (left == right)
return a[left];
assert(false);
// return -1;
}
int pivotPos = left + (rand() % (right - left + 1));
int pivot = a[pivotPos];
swap(a[right], a[pivotPos]);
int less = left;
for (int i = left; i < right; ++ i)
if (a[i] < pivot)
{
swap(a[i], a[less]);
less ++;
}
swap(a[less], a[right]);
if (less == k)
return a[less];
if (k < less)
return quickSort(left, less - 1, k);
else
return quickSort(less + 1, right, k);
}
int main()
{
int n, k;
f >> n >> k;
a.resize(n + 1);
srand(time(NULL));
for (int i = 1; i <= n; ++ i)
f >> a[i];
g << quickSort(1, n, k);
}