Pagini recente » Cod sursa (job #2917059) | Cod sursa (job #187955) | Cod sursa (job #852154) | Cod sursa (job #1870766) | Cod sursa (job #855201)
Cod sursa(job #855201)
#include <stdlib.h>
#include <time.h>
#include<fstream>
using namespace std;
ifstream fin("sdo.in");
ofstream fout("sdo.out");
int n, k, v[3000001];
void sort(int st,int dr)
{
if(st<dr)
{
srand ( time(NULL) );
int r,e1,e2,e3;
r=dr-st+1;
e1=rand()%r+st;
e2=rand()%r+st;
e3=rand()%r+st;
if(v[e1]<=v[e2]&&v[e2]<=v[e3]||v[e1]>=v[e2]&&v[e2]>=v[e3])r=e2;
else if(v[e2]<=v[e1]&&v[e1]<=v[e3]||v[e2]>=v[e1]&&v[e1]>=v[e3])r=e1;
else r=e3;
int i,j;
i=st;
j=dr;
r=v[r];
while(i<=j)
{
while(v[i]<r)i++;
while(v[j]>r)j--;
if(i<=j)
{
int aux;
aux=v[i];
v[i]=v[j];
v[j]=aux;
i++;
j--;
}
}
if(i-j==2&&k==i-1)fout<<v[i-1]<<" ";
else if(k>=i) sort(i,dr);
else sort(st,j);
}
else fout<<v[st]<<" ";
}
int main()
{
fin>>n;
fin>>k;
int i;
for(i=1;i<=n;i++)
fin>>v[i];
sort(1,n);
return 0;
}