Pagini recente » Cod sursa (job #2933125) | Cod sursa (job #142511) | Cod sursa (job #2883339) | Cod sursa (job #2873318) | Cod sursa (job #392537)
Cod sursa(job #392537)
#include <cstdio>
#include <cstdlib>
#define N 3000005
int A[N];
int poz(int a, int b)
{
int t,r=a+rand()%(b-a+1);
t=A[a]; A[a]=A[r]; A[r]=t;
for (int i=0, j=-1; a<b; a+=i, b+=j)
if (A[a]>A[b])
{
t=A[a]; A[a]=A[b]; A[b]=t;
t=i; i=-j; j=-t;
}
return a;
}
int rez(int a, int b, int k)
{
if (a<b)
{
int m=poz(a,b);
if (m<k) return rez(m+1,b,k);
if (m>k) return rez(a,m-1,k);
}
return A[a];
}
int main()
{
int n,k;
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d%d",&n,&k);
for (int i=1; i<=n; i++) scanf("%d",&A[i]);
printf("%d",rez(1,n,k));
return 0;
}