Pagini recente » Cod sursa (job #689142) | Cod sursa (job #2377548) | Cod sursa (job #1726639) | Cod sursa (job #3264231) | Cod sursa (job #798777)
Cod sursa(job #798777)
# include <cstdio>
# include <cstdlib>
# include <algorithm>
/*void swap(int* a, int* b)
{
int aux = *a; *a = *b; *b = aux;
}
*/
using namespace std;
int a[3000005], n, k, piv, p;
void quick(int st, int dr)
{
int i, j, aux = 0;
if (st >= dr) return;
i = st - 1; j = dr;
p = i + rand() % (j - i + 1);
piv = a[p];
swap(a[p],a[dr]);
while (i < j)
{
while (i < j && a[i] < piv) i++;
while (i < j && a[--j] > piv) {}
if (i < j) swap(a[i],a[j]);
}
swap(a[dr],a[i]);
if (i < k) quick(i + 1, dr);
else if (i > k) quick(st, i - 1);
}
int main()
{
int i;
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d%d",&n,&k);
for (i = 1; i <= n; i++)
scanf("%d",&a[i]);
quick(1,n);
printf("%d\n",a[k]);
//for (i = 1; i <= n; i++)
// printf("%d ",a[i]);
return 0;
}