Pagini recente » Cod sursa (job #1554958) | Cod sursa (job #1597364) | Cod sursa (job #107890) | Cod sursa (job #1244110) | Cod sursa (job #855189)
Cod sursa(job #855189)
#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(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;
}