Pagini recente » monthly-2012/runda-8/solutii | Cod sursa (job #2236592) | Cod sursa (job #1310436) | Cod sursa (job #9559) | Cod sursa (job #378096)
Cod sursa(job #378096)
# include <cstdio>
# include <time.h>
# include <stdlib.h>
using namespace std;
# define FIN "sdo.in"
# define FOUT "sdo.out"
# define MAX_N 3000005
int N, K, i;
int V[MAX_N];
void sort(int st, int dr, int k)
{
int i = st, j = dr, piv = V[rand() % (dr - st + 1) + st];
while (i <= j)
{
while (V[i] < piv) ++i;
while (V[j] > piv) --j;
if (i <= j)
{
int ax = V[i];
V[i] = V[j];
V[j] = ax;
++i; --j;
}
}
if (st < j && st <= k && k <= j) sort(st, j, K);
if (i < dr && i <= k && k <= dr) sort(i, dr, K);
}
int main()
{
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
srand(time(NULL));
scanf("%d%d", &N, &K);
for (i = 1; i <= N; ++i) scanf("%d", &V[i]);
sort(1, N, K);
printf("%d", V[K]);
return 0;
}