Pagini recente » Cod sursa (job #904451) | Cod sursa (job #3140391) | Cod sursa (job #2670970) | Cod sursa (job #1223077) | Cod sursa (job #1465173)
#include<cstdio>
#include<ctime>
#include<cstdlib>
using namespace std;
int v[3000010];
void swap(int i,int j){
int aux=v[i];
v[i]=v[j];
v[j]=aux;
}
int partitionare(int left,int right){
int i=left,j=right,pivot=v[left+rand()%(right-left+1)];
while(1){
while(v[i]<pivot)
i++;
while(v[j]>pivot)
j--;
if(i<j)
swap(i,j);
else
return j;
}
}
void quick_sort(int left,int right,int k){
if(left==right)
return;
int poz=partitionare(left,right);
if(poz-left+1>=k)
quick_sort(left,poz,k);
else
quick_sort(poz+1,right,k-poz+left-1);
}
int main(){
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
int n,i,k;
scanf("%d%d",&n,&k);
srand(time(0));
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
quick_sort(1,n,k);
printf("%d",v[k]);
return 0;
}