Pagini recente » Cod sursa (job #804117) | Cod sursa (job #2560943) | Cod sursa (job #1101912) | 4fbgtznd | Cod sursa (job #829484)
Cod sursa(job #829484)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <algorithm>
#define MAXN 3000002
using namespace std;
int a[MAXN], n, k;
int partition(int left, int right)
{
int x = a[right];
int i = left - 1;
for(int j = left; j <= right - 1; j++)
if(a[j] < x)
{
i++;
swap(a[i], a[j]);
}
swap(a[right], a[i + 1]);
return i + 1;
}
int p_termen(int l, int r, int p)
{
if(l == r)
return a[l];
int j = partition(l, r);
int i = j - l + 1;
if(i == p)
return a[i];
if(p < i)
return p_termen(l, j - 1, p);
else
return p_termen(j + 1, r, p - i);
}
int main()
{
freopen("sdo.in", "r", stdin);
freopen("sdo.out", "w", stdout);
srand(time(NULL));
scanf("%d %d", &n, &k);
for(int i = 1; i <= n; i++)
scanf("%d", &a[i]);
printf("%d", p_termen(1, n, k));
return 0;
}