Pagini recente » Cod sursa (job #504254) | Cod sursa (job #2301405) | Cod sursa (job #403697) | Cod sursa (job #539433) | Cod sursa (job #964975)
Cod sursa(job #964975)
#include <iostream>
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <ctime>
using namespace std;
int a[3000005], N, K;
int poz( int l, int r )
{
int i = l, j = r, pivot = a[ l + rand()%(r-l+1) ];
while( true )
{
while( a[i] < pivot )
i++;
while( a[j] > pivot )
j--;
if ( i < j )
swap( a[i], a[j] );
else
return j;
}
return 0;
}
void sort( int left, int right, int k )
{
if ( left < right )
{
int q = poz( left, right );
int t = q - left + 1;
if( t >= k )
sort ( left, q, k );
else
sort( q + 1, right, k - t );
}
}
int main()
{
ifstream f("sdo.in");
ofstream g("sdo.out");
f >> N >> K;
srand(time(NULL));
for ( int i = 1; i <= N; i++ )
f >> a[i];
sort(1, N,K);
g << a[K];
return 0;
}