Pagini recente » Cod sursa (job #721094) | Cod sursa (job #2592418) | Cod sursa (job #1871312) | Cod sursa (job #889665) | Cod sursa (job #1735377)
#include <cstdio>
#include<stdlib.h>
#include<time.h>
#define MAXN 3000000
int n, v[MAXN+1];
inline void swap1(int a, int b)
{
int aux=v[a];
v[a]=v[b];
v[b]=aux;
}
inline int pivotare(int st, int dr)
{
int i=st, j=dr, pivot=v[st+rand()%(dr-st+1)];
while(i<=j)
{
while(v[i] < pivot) ++i;
while(v[j] > pivot) --j;
if(i<=j) swap1(i, j), ++i, --j;
}
return i-1;
}
int kelement(int st, int dr, int k)
{
int q, r;
if(st==dr)
return v[st];
q=pivotare(st, dr);
r=q-st+1;
if(r==k) return v[q];
if(k<r) return kelement(st, q-1, k);
return kelement(q+1, dr, k-r);
}
int main()
{
srand(time(0));
freopen("sdo.in", "r", stdin);
freopen("sdo.out", "w", stdout);
int k;
scanf("%d%d", &n, &k);
for(int i=1;i<=n;++i)
scanf("%d", &v[i]);
printf("%d", kelement(1, n, k));
return 0;
}