Pagini recente » Cod sursa (job #2563792) | Cod sursa (job #1258014) | Cod sursa (job #605618) | Cod sursa (job #2001178) | Cod sursa (job #1465176)
#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-1,j=right+1,pivot=v[left+rand()%(right-left+1)];
while(1){
i++;
while(v[i]<pivot)
i++;
j--;
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;
}