Pagini recente » Cod sursa (job #372987) | Cod sursa (job #2667553) | Cod sursa (job #1140575) | Cod sursa (job #233003) | Cod sursa (job #1016925)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
long a[3000001],n,k;
ifstream f("sdo.in");
ofstream g("sdo.out");
void quicksort(long a[], long stanga, long dreapta)
{
long i, j, piv, aux,x,y,z,mi,ma;
if(stanga>=dreapta)
return ;
i=stanga;
j=dreapta;
x=a[rand()%(j-i+1)+i];
srand(time(0));
y=a[rand()%(j-i+1)+i];
srand(time(0));
z=a[rand()%(j-i+1)+i];
srand(time(0));
if(x<=y && x<=z)
mi=x;
if(y<=x && y<=z)
mi=y;
if(z<=x && z<=y)
mi=z;
if(x>=y && x>=z)
ma=x;
if(y>=x && y>=z)
ma=y;
if(z>=x && z>=y)
ma=z;
//piv=x+y+z-max-min;
if(ma==x)
{
if(mi==y)
piv=z;
else
piv=y;
}
else
if(ma==y)
{
if(mi==x)
piv=z;
else
piv=x;
}
else
{
if(mi==x)
piv=y;
else
piv=x;
}
while(i<=j)
{
while(a[i]<piv)
i++;
while(a[j]>piv)
j--;
if(i<=j)
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
i++;
j--;
}
}
if(k<=j)
quicksort(a,stanga,j);
else
quicksort(a,i,dreapta);
}
int main()
{
long i,j,l;
f>>n>>k;
for(i=1;i<=n;i++)
f>>a[i];
quicksort(a,1,n);
g<<a[k];
f.close();
g.close();
return 0;
}