Pagini recente » Cod sursa (job #2884890) | Cod sursa (job #1887068) | Cod sursa (job #568966) | Cod sursa (job #1436472) | Cod sursa (job #1697339)
#include <fstream>
#include <cstdlib>
using namespace std;
void processKth(int left, int right, int arr[], int k)
{
int pivot = arr[left + (rand() % (right - left + 1))];
int i = left, j = right;
while (i <= j)
{
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j)
{
swap(arr[i], arr[j]);
i++;
j--;
}
}
if (left < j && k >= left && k <= j)
processKth(left, j, arr, k);
else if (i < right && k >= i && k <= right)
processKth(i, right, arr, k);
}
int main()
{
int n, i, k;
ifstream f("sdo.in");
ofstream g("sdo.out");
f >> n >> k;
k--;
int *arr = new int[n];
for (i = 0; i < n; i++)
f >> arr[i];
processKth(0, n - 1, arr, k);
g << arr[k];
delete [] arr;
f.close();
g.close();
return 0;
}