Pagini recente » Cod sursa (job #196215) | Cod sursa (job #847795) | Cod sursa (job #714285) | Cod sursa (job #2954997) | Cod sursa (job #3124575)
#include <fstream>
#include <algorithm>
#include <cassert>
#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 = a[rand() % (right - left + 1) + left];
int index = left;
for(int i = left; i <= right; i++)
if(a[i] < pivot)
swap(a[index++], a[i]);
swap(a[index], pivot);
if(index < k)
return QuickSelect(index + 1, right);
if(index > k)
return QuickSelect(left, index - 1);
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;
}