Pagini recente » Cod sursa (job #1548622) | Cod sursa (job #1967612) | Cod sursa (job #1055441) | Cod sursa (job #2999061) | Cod sursa (job #3124522)
#include <fstream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#define ll long long
using namespace std;
ifstream cin("sdo.in");
ofstream cout("sdo.out");
const int NMAX = 3e6;
int n, k;
int a[NMAX + 1];
int QuickSelect(int left, int right)
{
int pivot_index = rand() % (right - left + 1) + left;
int index = left;
for(int i = left; i <= right; i++)
if(i != pivot_index && a[i] < a[pivot_index])
swap(a[index++], a[i]);
swap(a[index], a[pivot_index]);
if(index < k)
return QuickSelect(index + 1, right);
if(index > k)
return QuickSelect(left, index);
return a[index];
}
int main()
{
srand(time(NULL));
cin >> n >> k;
for(int i = 1; i <= n; i++)
cin >> a[i];
cout << QuickSelect(1, n);
return 0;
}