Pagini recente » Cod sursa (job #2713936) | Cod sursa (job #1919593) | Cod sursa (job #2823055) | Cod sursa (job #450363) | Cod sursa (job #856926)
Cod sursa(job #856926)
#include<cstdio>
#include<cstdlib>
#include<string.h>
using namespace std;
int v[300001],k,cont;
int n;
using namespace std;
int partitionare(int st,int dr)
{
int pivot,p,i,j,aux;
p=st+(rand()%(dr-st+1));
pivot=v[p];
i=st-1;
j=dr+1;
while(1)
{
do{ i++; } while(v[i]<pivot);
do{ j--; } while(v[j]>pivot);
if(i<j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else
return j;
}
}
void sort(int st,int dr,int k)
{
int partitie,cont;
if(st<dr)
{
partitie=partitionare(st,dr);
cont=partitie-st+1;
if (cont>=k)
st=cont;
else
dr=cont+1;
}
}
void read()
{
int i;
scanf("%d",&n,&k);
for (i=1;i<=n;++i)
scanf("%d",&v[i]);
}
void write()
{
printf("%d",v[k]);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
read();
srand(time(NULL));
sort(1,n,k);
write();
}