Pagini recente » Cod sursa (job #387801) | Cod sursa (job #2856382) | Cod sursa (job #2136187) | Cod sursa (job #3211500) | Cod sursa (job #1009922)
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define N 3000000
int a[N];
int rand(int i,int j){return i+rand()%(j-i);}
int kth(int l,int r,int k){
if(l==r)return a[l];
int l1=l-1,r1=r+1,x=a[rand(l,r)];
while(1){
do{--r1;}while(a[r1]>x);
do{++l1;}while(a[l1]<x);
if(l1<r1) a[l1]^=a[r1]^=a[l1]^=a[r1];else break;
}
if(r1>=k) return kth(l,r1,k); return kth(r1+1,r,k);
}
int main(){
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
srand(time(NULL));
int n,k;
scanf("%i%i",&n,&k);
fr(i,0,n)scanf("%i",a+i);
printf("%i\n",kth(0,n-1,k-1));
return 0;
}