Pagini recente » Cod sursa (job #1353568) | Cod sursa (job #1031764) | Cod sursa (job #1110069) | Cod sursa (job #1360856) | Cod sursa (job #2938856)
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
const int NMAX = 3000000;
int v[NMAX+1] , k ;
void nth(int a[], int st, int dr ){
if( st >= dr )
return ;
int piv = ( rand() % (dr-st+1) ) + st ;
swap( a[piv] , a[dr] );
int freeuse = st;
for( int i = st ; i < dr ; i++ ){
if( a[i] < a[dr] )
swap( a[freeuse++] , a[i] );
}
swap( a[dr] , a[freeuse]);
if( freeuse == k )
return ;
if( freeuse > k )
nth( a , st , freeuse - 1 );
else
nth( a , freeuse + 1, dr);
}
int main()
{
ifstream in("sdo.in");
ofstream out("sdo.out");
int n ;
in >> n >> k ;
for( int i = 1 ; i <= n ; i++ )
in >> v[i];
nth( v , 1 , n );
out << v[k] ;
return 0;
}