Cod sursa(job #1850799)

Utilizator alexkolumeRadulescu Ioan-Alexandru alexkolume Data 18 ianuarie 2017 22:17:54
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <vector>
#include <iostream>
using namespace std;

void modified_qsort(vector<int> &p, int lo, int hi, int k)
{
    int i = lo, j = hi;
    int mid = lo + (hi - lo) / 2;
    int pivot = p[mid];

    if (i != j)
    {
        while (i <= j)
        {
            while (p[i] < pivot)
                i++;
            while (p[j] > pivot)
                j--;
            if (i <= j)
                swap(p[i++], p[j--]);
        }
        if (lo < j || i < hi)
        {
            if (lo <= k && k <= j)
                modified_qsort (p, lo, j, k);
            else if (k >= i && k <= hi)
                modified_qsort (p, i, hi, k);

        }
    }
}

int main() {
    int n, k, x;
    vector <int> v;

    ifstream fin("sdo.in");
    ofstream fout("sdo.out");
    fin >> n >> k;
    for (int i = 0; i < n; ++i)
    {
        fin >> x;
        v.push_back(x);
    }
    fin.close();

    modified_qsort(v, 0, n - 1, k - 1);

    fout << v[k - 1] << endl;
    fout.close();

    return 0;
}