Cod sursa(job #2953076)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 10 decembrie 2022 13:49:08
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>
#include <climits>
#include <vector>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <bitset>
#include <map>
#include <cstring>
#include <algorithm>

#define NMAX 500003
#define LOG 20

using namespace std;



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

int n, k;
bool gasit = false;
vector<unsigned int>v;


int gasescPivot(int st, int dr)
{
    int dSt = 0, dDr = 1;
    while (st < dr)
    {
        if (v[st] > v[dr])
        {
            swap(v[st], v[dr]);
            dSt = 1 - dSt;
            dDr = 1 - dDr;
        }
        st += dSt;
        dr -= dDr;
    }
    return st;
}

void quickSort(int st, int dr)
{
    if (gasit)
    {
        return;
    }
    if (st < dr)
    {
        int piv = gasescPivot(st, dr);
        if (piv == k)
        {
            gasit = true;
            return;
        }

        quickSort(st, piv - 1);
        quickSort(piv + 1, dr);
    }
}

int main()
{
    fin >> n >> k;
    v.resize(n + 1);
    for (int i = 1; i <= n; i++)
    {
        fin >> v[i];
    }
    quickSort(1, n);
    fout << v[k];

    return 0;
}