Pagini recente » Cod sursa (job #1798953) | Cod sursa (job #1479267) | Cod sursa (job #999537) | Cod sursa (job #1028050) | Cod sursa (job #2670594)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
const int NMAX = 3e6;
int v[NMAX];
int nth_elem ( int n, int k, int v[] ) {
int start = 0, end = n - 1, ipiv, i, j, pivot, aux;
while ( start < end ) {
ipiv = start + ( end - start ) / 2;
pivot = v[ipiv];
i = start;
while ( v[i] < pivot )
i++;
j = end;
while ( v[j] > pivot )
j--;
while ( i < j ) {
aux = v[i];
v[i] = v[j];
v[j] = aux;
do i++; while( v[i] < pivot);
do j--; while( v[j] > pivot);
}
if ( k <= j )
end = j;
else
start = j + 1;
}
return v[start];
}
int main() {
FILE *fin, * fout;
int n, k, i;
fin = fopen ( "sdo.in", "r" );
fscanf ( fin, "%d%d", &n, &k );
for ( i = 0; i < n; i++ )
fscanf ( fin, "%d ", &v[i] );
fclose ( fin );
fout = fopen ( "sdo.out", "w" );
srand ( time ( NULL ) );
fprintf( fout, "%d", nth_elem ( n, k - 1, v ));
fclose ( fout );
return 0;
}