Pagini recente » Cod sursa (job #3214860) | Cod sursa (job #2430681) | Cod sursa (job #293916) | Cod sursa (job #1226577) | Cod sursa (job #1555250)
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <fstream>
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");
int v[3000030], n, k;
int partitie( int s, int d )
{
int p = s + rand()%(d - s + 1);
int i, j, x, aux;
aux = v[p];
v[p] = v[d];
v[d] = aux;
i = s - 1;
x = v[d];
for( j = s; j < d; j ++ )
if(v[j] <= x )
{
i ++;
aux = v[i];
v[i] = v[j];
v[j] = aux;
}
aux = v[i+1];
v[i+1] = v[d];
v[d] = aux;
return i+1;
}
void quick( int s, int d )
{
if( s < d )
{
int q = partitie( s, d );
if( q == k )
return;
else if( q < k )
quick( q+1, d );
else if( q > k )
quick( s, q-1 );
}
}
int main()
{
f>>n>>k;
for(int i = 1; i <= n; i ++ )
f>>v[i];
srand( time(NULL) );
quick( 1, n );
g<<v[k];
}