Pagini recente » Cod sursa (job #2884411) | Cod sursa (job #427393) | Cod sursa (job #1873923) | Cod sursa (job #18901) | Cod sursa (job #982924)
Cod sursa(job #982924)
#include <stdio.h>
#define MAXSIZE 30000001
long M[MAXSIZE];
void swap(int i, int j)
{
long temp;
temp = M[i];
M[i] = M[j];
M[j] = temp;
}
int partition(int left, int right)
{
long pivot = M[left];
int i = left + 1;
int j = right;
while (i < j)
{
while (i < right && M[i] <= pivot) ++i;
while (M[j] > pivot) --j;
if (i < j)
swap(i++, j--);
}
swap(left, j);
return j;
}
int main()
{
int i, n, k, p;
int l, r;
freopen("sdo.in", "r", stdin);
freopen("sdo.out", "w", stdout);
scanf("%d %d", &n, &k);
for (i = 1; i <= n; ++i)
scanf("%ld", M + i);
l = 1, r = n;
while (1)
{
p = partition(l, r);
if (p < k) l = p + 1;
else if (p > k) r = p - 1;
else break;
}
printf("%ld\n", M[k]);
return 0;
}