Pagini recente » Cod sursa (job #1538879) | Cod sursa (job #1821889) | Cod sursa (job #2433344) | Cod sursa (job #1335543) | Cod sursa (job #831189)
Cod sursa(job #831189)
#include <cstdio>
#include <cstdlib>
#include <ctime>
using namespace std;
int n,k,i,L,R,st,dr,mi,v,aux,X[3000001];
int main()
{
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)scanf("%d",&X[i]);
L=1;R=n;
srand(time(0));
while(L<R)
{
st=L; dr=R; mi=st+rand()%(R-L+1);
v=X[mi];
do
{
while(X[st]<v)st++;
while(X[dr]>v)dr--;
if(st<=dr){aux = X[st]; X[st] = X[dr]; X[dr]=aux; st++; dr--;}
} while(st<=dr);
if(k<=dr)R=dr;
else L=st;
}
printf("%d",X[k]);
return 0;
}