Pagini recente » Cod sursa (job #2309250) | Cod sursa (job #2353224) | Cod sursa (job #167439) | Cod sursa (job #1696322) | Cod sursa (job #1194948)
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <ctime>
#define N 3000010
using namespace std;
int n,k,i,a[N];
void SDO(int,int);
int main()
{
freopen("sdo.in","r",stdin);
freopen("sdo.out","w",stdout);
srand(time(NULL));
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
SDO(1,n);
return 0;
}
void SDO(int L,int R)
{
if(L==R){printf("%d",a[L]);return;}
int LL=L,RR=R,V,aux;
aux=((rand()<<14)|rand());
aux=L+aux%(R-L+1);
V=a[aux];
do
{
while(a[LL]<V)LL++;
while(a[RR]>V)RR--;
if(LL<=RR){aux=a[LL];a[LL]=a[RR];a[RR]=aux;LL++;RR--;}
}while(LL<=RR);
if(L<=k&&k<=RR)SDO(L,RR);
else SDO(LL,R);
}