Pagini recente » Cod sursa (job #2578981) | Cod sursa (job #794429) | Cod sursa (job #242692) | Cod sursa (job #2142868) | Cod sursa (job #856857)
Cod sursa(job #856857)
#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
int n,k,a[3000001];
void quick(int l,int r){
if(l==r){
if(k==l) printf("%d",a[k]);
return;
}
int piv=rand()%(r-l+1)+l;
int x=l,y=r,aux;
while(x<=y){
while(a[x]<a[piv])
++x;
while(a[y]>a[piv])
--y;
if(x<=y){
aux=a[x];
a[x]=a[y];
a[y]=aux;
++x; --y;
}
}
if(y+1==k){
printf("%d",a[k]);
return;
}
if(k>=x && x<=r)
quick(x,r);
else
if(y>=l) quick(l,y);
}
int 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);
}
srand(time(NULL));
quick(1,n);
}