Pagini recente » Cod sursa (job #3311259) | Cod sursa (job #3321157) | Cod sursa (job #3333123) | Monitorul de evaluare | Cod sursa (job #3350362)
#include <iostream>
#include <queue>
#include <fstream>
#include <map>
#include <cstring>
#include <stack>
#include <ctime>
#include <cstdlib>
#define N_MAX 3000005
#define MOD 666013
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
int n, k;
int a[N_MAX];
int find_kth(int l, int r) {
int part_ind = l + rand() % (r - l + 1);
int pivot = a[part_ind];
int i = l - 1;
for (int j = l; j <= r; j++) {
if (a[j] < pivot) {
swap(a[j], a[++i]);
}
}
swap(a[++i], a[part_ind]);
if (i == k - 1)return a[i];
if (i < k - 1)return find_kth(i + 1, r);
return find_kth(l, i - 1);
}
int main()
{
srand(time(0));
in >> n >> k;
for (int i = 0; i < n; i++) {
in >> a[i];
}
out << find_kth(0, n - 1);
return 0;
}