Pagini recente » Cod sursa (job #1220953) | Cod sursa (job #1092827) | Cod sursa (job #1341163) | Cod sursa (job #488699) | Cod sursa (job #3124581)
#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;
// cout << pivot << '\n';
for(int i = left; i <= right; i++)
if(a[i] < pivot)
swap(a[index++], a[i]);
// for(int i = 1; i <= n; i++)
// cout << a[i] << ' ';
// cout << '\n';
// cout << index << '\n';
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;
}