Pagini recente » Cod sursa (job #2534618) | Cod sursa (job #2577921) | Cod sursa (job #2415670) | Cod sursa (job #2384428) | Cod sursa (job #2292837)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <time.h>
using namespace std;
long long pivot (long long *v, long long st, long long dr)
{
long long x1 ,x2, x3 ,y = dr - st + 1 ;
x1 = rand() % y + st;
x2 = rand() % y + st;
x3 = rand() % y + st;
if(v[x1] <= v[x2] && v[x1] <= v[x3])
{
if( v[x2] <= v[x3])
return v[x2];
return v[x3];
}
if(v[x2] <= v[x1] && v[x2] <= v[x3])
{
if( v[x3] <= v[x1])
return v[x3];
return v[x1];
}
if(v[x3] <= v[x1] && v[x3] <= v[x2])
{
if( v[x2] <= v[x1])
return v[x2];
return v[x1];
}
}
void QuickSort ( long long *v ,long long st, long long dr)
{
if ( st >= dr )
return;
long long p = pivot (v, st, dr);
long long i = st , j = dr;
while ( i <=j)
{
while ( v[i] < p )
i++;
while ( v[j] > p)
j--;
if( i<= j)
{
swap(v[i], v[j]);
i++;
j--;
}
}
QuickSort(v, st ,j);
QuickSort (v, i, dr);
}
int main()
{
ifstream in ( "sdo.in");
ofstream out ("sdo.out");
long long n, i, k, *v;
in >> n >> k;
v = new long long [n+1];
for ( i =0 ; i< n ; i++)
in >> v[i];
srand(time(NULL));
QuickSort (v, 0, n-1);
out << v[k-1];
in.close();
out.close();
return 0;
}