Pagini recente » Cod sursa (job #1403477) | Cod sursa (job #3153927) | Cod sursa (job #3173117) | Cod sursa (job #2538639) | Cod sursa (job #2145769)
#include <bits/stdc++.h>
#define N 3000001
using namespace std;
int n, i, k, a[N];
void kth_element(int *a, int n, int k)
{
if (n == 1) return;
int p = rand() % n;
int lower = 0, il = 0, iu = n;
int *v = (int *) malloc(n * sizeof(int));
for (int i = 0; i < n; i++)
if (a[i] <= a[p])
{
lower++;
v[il++] = a[i];
}
else
v[--iu] = a[i];
memcpy(a, v, n * sizeof(int));
free(v);
if (lower >= k)
kth_element(a, lower, k);
else
kth_element(a + lower, n - lower, k - lower);
}
int main()
{
freopen ("sdo.in", "r", stdin);
freopen ("sdo.out", "w", stdout);
scanf("%i%i", &n, &k);
for (i = 0; i < n; i++)
scanf("%i", &a[i]);
srand(time(NULL));
kth_element(a, n, k);
printf("%i", a[k - 1]);
return 0;
}