Pagini recente » Cod sursa (job #2973242) | Cod sursa (job #2865326) | Cod sursa (job #1480221) | Cod sursa (job #2934218) | Cod sursa (job #855597)
Cod sursa(job #855597)
#include <stdlib.h>
#include <time.h>
#include<fstream>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int n, k, v[3000001];
void sort(int st,int dr)
{
if(st<dr)
{
srand ( time(NULL) );
int rnd, m, nr1, nr2, nr3;
m=dr-st+1;
nr1=rand()%m+st;
nr2=rand()%m+st;
nr3=rand()%m+st;
if( v[nr1] <= v[nr2] && v[nr2] <= v[nr3] || v[nr1] >= v[nr2] && v[nr2] >= v[nr3] )
rnd=nr2;
else
if( v[nr2] <= v[nr1] && v[nr1] <= v[nr3] || v[nr2] >= v[nr1] && v[nr1] >= v[nr3] )
rnd=nr1;
else
rnd=nr3;
int i,j;
i=st;
j=dr;
while(i<=j)
{
while( v[i] < v[rnd] )
i++;
while( v[j] > v[rnd] )
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 ) )
g<<v[i-1]<<" ";
else
if(k>=i)
sort(i,dr);
else sort(st,j);
}
else g<<v[st]<<" ";
}
int main()
{
f>>n;
f>>k;
int i;
for(i=1;i<=n;i++)
f>>v[i];
sort(1,n);
return 0;
}