Cod sursa(job #1843571)

Utilizator hantoniusStan Antoniu hantonius Data 8 ianuarie 2017 21:44:00
Problema Statistici de ordine Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#define maxn 3000002
using namespace std;

ifstream fin("sdo.in");
ofstream fout("sdo.out");

int v[maxn], n, k;

void read()
{
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
        fin >> v[i];
}

int divide(int p, int u)
{
    int st = p, dr = u, mij = v[p];

    while (st < dr) {
        while (st < dr && mij <= v[dr])
            dr--;
        v[st] = v[dr];
        while (st < dr && mij >= v[st])
            st++;
        v[dr] = v[st];
    }
    v[st] = mij;
    return st;
}

void qsort_special(int p, int u)
{
    int m = divide(p, u);
    if (k < m)
        qsort_special(p, m - 1);
    else if (k > m)
        qsort_special(m + 1, u);
}

int main()
{
    read();
    qsort_special(1, n);
    fout << v[k];
    return 0;
}