Pagini recente » Cod sursa (job #1254946) | Cod sursa (job #565879) | Cod sursa (job #632372) | Cod sursa (job #3203931) | Cod sursa (job #983006)
Cod sursa(job #983006)
#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[right];
int i = left - 1;
int j;
for (j = left; j < right; ++j)
if (M[j] <= pivot)
swap(++i, j);
swap(++i, right);
return i;
}
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;
}