Pagini recente » Cod sursa (job #238203) | Cod sursa (job #2498363) | Cod sursa (job #563694) | Cod sursa (job #2939337) | Cod sursa (job #1473682)
#include <fstream>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
using namespace std::placeholders;
template <typename T>
T median_3(const T& a, const T& b, const T& c){
return (a <= b && b <= c) || (c <= b && b <= c) ? b : median_3(b, c, a); }
template <typename T>
void my_nth_element(T& st, T& mij, T& dr){
if(st == mij){
return; }
else{
const auto pivot_val = median_3(*st, *(st + distance(st, dr)/2), *(dr-1));
const auto pivot = partition(st, dr, bind(less<int>(), _1, pivot_val));
if(mij < pivot){
my_nth_element(st, mij, pivot); }
else if(mij >= pivot){
my_nth_element(pivot, mij, dr); } } }
int main(){
ifstream f("sdo.in");
ofstream g("sdo.out");
int n, k;
f >> n >> k;
vector<int> v(n);
for(auto& x : v){
f >> x; }
nth_element(begin(v), begin(v)+k-1, end(v));
g << v[k-1];
return 0; }