Cod sursa(job #2925545)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 15 octombrie 2022 17:40:52
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

using namespace std;

const int NMAX = 3000000;

int v[1 + NMAX];

int sol(int st, int dr, int k)
{
    if (st == dr)
        return v[k];
    else
    {
        int pivot = v[dr];

        int stSwap = st - 1;

        for (int i = st; i < dr; i++)
        {
            if (v[i] < pivot)
            {
                stSwap++;
                swap(v[stSwap], v[i]);
            }
        }

        stSwap++;
        swap(v[stSwap], v[dr]);

        if (k == stSwap)
            return v[stSwap];
        else if (k < stSwap)
            return sol(st, stSwap - 1, k);
        else
            return sol(stSwap + 1, dr, k);
    }
}

int main()
{
    ifstream in("sdo.in");
    ofstream out("sdo.out");

    int n, k;
    in >> n >> k;

    for (int i = 1; i <= n; i++)
        in >> v[i];

    out << sol(1, n, k) << '\n';

    return 0;
}