Pagini recente » Cod sursa (job #1331829) | Cod sursa (job #1684204) | Cod sursa (job #1976851) | Cod sursa (job #2701831) | Cod sursa (job #1068839)
#include<fstream>
#define M (l+(r-l)/2)
using namespace std;
const int maxn = 3080000;
int n,a[maxn],k;
int find(int l=1,int r=n,int p=k){
if(l==r && r == k)return a[k];
unsigned i=l,j=r;
unsigned mij = a[M];
do{
while(a[i]<mij)i++;
while(mij<a[j])j--;
if (i<=j){
swap(a[i],a[j]);
i++;
j--;
}
}while(i<=j);
if(l<=j && p<=j && l<=p) return find(l,j,p);
if(i<=r && p<=r && i<=p) return find(i,r,p);
}
main(){
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",find());
}