Pagini recente » Cod sursa (job #1503048) | Cod sursa (job #2632452) | Cod sursa (job #820853) | Cod sursa (job #16570) | Cod sursa (job #821049)
Cod sursa(job #821049)
#include<cstdio>
#include<algorithm>
#include<stdlib.h>
#include<time.h>
using namespace std;
#define NM 3000005
int v[NM];
int N,k;
inline int aranjeaza(int st, int dr) {
srand((unsigned)time(NULL));
int poz = rand()%N+1;
int x = v[poz];
int aux = v[poz];
v[poz]=v[st];
v[st]=aux;
int i=st;
for (int j = st+1; j<=dr; ++j) {
if(v[j]<x) {
++i;
int aux = v[i];
v[i]=v[j];
v[j]=aux;
}
}
aux = v[i];
v[i]=v[st];
v[st]=aux;
return i;
}
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",&v[i]);
}
int pivot = N+1;
int st=1,dr=N;
do{
pivot = aranjeaza(st,dr);
if (pivot < k) {
st = pivot + 1;
} else if (pivot > k) {
dr = pivot-1;
}
} while (pivot!=k);
printf("%d",v[k]);
return 0;
}