Pagini recente » Cod sursa (job #272904) | Cod sursa (job #2044921) | Cod sursa (job #426713) | Cod sursa (job #247080) | Cod sursa (job #1472450)
#include<stdio.h>
int n,a[3000001],i,k,j,t;
int C(int p,int r,int i) {
int l=p-1,j;
if(p==r)
return a[p];
if(!((p+r)&1))
a[r]^=a[p]^=a[r]^=a[p];
for(j=p;j<r;j++)
if(a[j]<=a[r]) {
l++;
if(a[l]!=a[j])
a[l]^=a[j]^=a[l]^=a[j];
}
if(l+1!=r&&a[l+1]!=a[r])
a[l+1]^=a[r]^=a[l+1]^=a[r];
return i==l-p+2?a[l+1]:(i<l-p+2?C(p,l,i):C(l+2,r,i-l+p-2));
}
int main() {
freopen("sdo.in","r",stdin),freopen("sdo.out","w",stdout),scanf("%d%d%d",&n,&k,&a[1]);
for(i=2;i<=n;i++) {
scanf("%d",&a[i]);
if(a[i-1]<a[i])
j++;
else
t++;
}
printf("%d",j==n-1?a[k]:(t==n-1?a[n-k+1]:C(1,n,k)));
}