Pagini recente » AVD | Rezultatele filtrării | Sport2 | Cod sursa (job #462335)
Cod sursa(job #462335)
#include <ctime>
#include <cstdlib>
#include <fstream>
#include <iterator>
#define MAX_N 3000011
/*
*
*/
using namespace std;
int v[MAX_N];
inline void OrderStatistic( int left, int right, int k )
{
if( left < right )
{
int lleft=left-1, rright=right+1, pValue=v[ left+rand()%(right-left+1) ];
while( true )
{
while( pValue > v[++lleft] );
while( pValue < v[--rright] );
if( lleft > rright )
break;
swap( v[lleft], v[rright] );
}
if( rright >= k )
OrderStatistic( left, rright, k );
else OrderStatistic( rright+1, right, k );
}
}
int main( void )
{
srand( time(NULL) );
int N, k;
ifstream in( "sdo.in" );
in>>N>>k;
copy( istream_iterator<int>(in), istream_iterator<int>(), v+1 );
ofstream out( "sdo.out" );
OrderStatistic( 1, N, k );
out<<v[k]<<'\n';
return EXIT_SUCCESS;
}