Pagini recente » Cod sursa (job #2072150) | Cod sursa (job #1016799) | Cod sursa (job #284074) | Cod sursa (job #1630964) | Cod sursa (job #1018614)
#include <fstream>
#include <ctime>
#include <cstdlib>
#include <cstdio>
#include <vector>
using namespace std;
ifstream cin("sdo.in");
ofstream cout("sdo.out");
int n, v[3000000], k;
void swap( int &a, int &b ) {
int aux = a;
a = b;
b = aux;
}
void qsort( int left, int right ) {
if ( left >= right )
return;
int piv = v[left + rand() % ( right - left + 1 )], begin = left, end = right;
while ( begin <= end ) {
while ( v[begin] < piv )
++begin;
while ( v[end] > piv )
--end;
if ( begin <= end ) {
swap( v[begin], v[end] );
++begin;
--end;
}
}
if (k <= end)
qsort( left, end );
else
qsort( begin, right );
}
int main()
{
srand(time(NULL));
FILE *fin, *fout;
fin = fopen( "sdo.in", "r" );
fscanf( fopen( "sdo.in", "r" ), "%d%d", &n, &k );
for ( int i = 0; i < n; ++i )
fscanf( fin, "%d", &v[i] );
qsort(1, n);
fout = fopen( "sdo.out", "w" );
fprintf( fout, "%d", v[k] );
fclose( fout );
return 0;
}