Pagini recente » Cod sursa (job #2022949) | Cod sursa (job #2075076) | Monitorul de evaluare | Cod sursa (job #699540) | Cod sursa (job #2163456)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sdo.in" );
ofstream g("sdo.out");
int partition(int arr[], int first, int last)
{
swap(arr[last], arr[(first+last)/2]);
int lastAdd = first-1;
for ( int i=first; i<last; i++ ) {
if ( arr[i] <= arr[last] )
{
++lastAdd;
swap(arr[lastAdd], arr[i]);
}
}
swap(arr[++lastAdd], arr[last]);
return lastAdd;
}
int k;
void quicksortStatistica(int arr[], int first, int last)
{
int piv = partition(arr, first, last);
if ( k == piv ) return;
if ( k < piv && piv-1-first > 0 )
quicksortStatistica(arr, first, piv-1);
if ( k > piv && last - (piv+1) > 0 )
quicksortStatistica(arr, piv+1, last);
}
int n, v[3000005];
int main()
{
f >> n >> k;
for ( int i=1; i<=n; i++ )
f >> v[i];
quicksortStatistica(v, 1, n);
g << v[k];
}