Pagini recente » Cod sursa (job #698260) | Cod sursa (job #913747) | Cod sursa (job #1564139) | Cod sursa (job #1959794) | Cod sursa (job #2606780)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
const int NMAX = 3000005;
int a[NMAX],n,k;
int partitionA(int st,int dr){
int piv=st+rand()%(dr-st+1);
swap(a[dr],a[piv]);
piv=st;
for(int i=st;i<=dr-1;i++){
if(a[i]<=a[dr]){
swap(a[i],a[piv]);
piv++;
}
}
swap(a[dr],a[piv]);
return piv;
}
void srt(int st,int dr,int k){
if(st>=dr) return;
int pz=partitionA(st,dr);
if(k>pz) srt(pz+1,dr,k);
if(k<pz) srt(st,pz-1,k);
}
int main()
{
fin >> n >> k;
for(int i=1;i<=n;i++) fin >> a[i];
int st=1,dr=n;
srt(st,dr,k);
fout << a[k];
return 0;
}