Cod sursa(job #2321114)

Utilizator mariusgrafuMarius Grafu mariusgrafu Data 15 ianuarie 2019 18:29:51
Problema Statistici de ordine Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

int sdo(vector<int> v, int k) {
    int left = 0, right = v.size() - 1;
    int m = v.size()/2 - 1;
    int val = v[m];

    vector<int> L;
    vector<int> R;
    for(int i = left; i <= right; ++i) {
        if(v[i] <= val) L.push_back(v[i]);
        else R.push_back(v[i]);
    }

    if(L.size() == k) return val;
    if(k >= L.size()) return sdo(R, k - R.size());
    return sdo(L, k);

}

int main()
{
    int n, k;
    vector<int> v;
    ifstream in("sdo.in");
    ofstream out("sdo.out");

    in >> n >> k;

    k--;

    for(int i = 0; i < n; ++i) {
        int x;
        in >> x;
        v.push_back(x);
    }
    out << sdo(v, k);

    in.close(); out.close();
    return 0;
}