Pagini recente » Cod sursa (job #2287000) | Cod sursa (job #2188405) | Cod sursa (job #2582354) | Cod sursa (job #2989165) | Cod sursa (job #1068841)
#include<fstream>
#define M (l+(r-l)/2)
using namespace std;
const int maxn = 3080000;
int n,a[maxn],k;
void 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) find(l,j,p);
if(i<r && p<=r && i<=p) 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]);
};
find();
printf("%d",a[k]);
}