Cod sursa(job #3326644)

Utilizator adriana_grGrama Adriana adriana_gr Data 29 noiembrie 2025 18:23:07
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

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

vector<int> nr;
int n, k;

int pivotare(int st, int dr)
{
    int pivot = nr[dr];
    int i = st;

    for(int j = st; j < dr; j++)
        if(nr[j] <= pivot)
            swap(nr[j], nr[i++]);

    swap(nr[i], nr[dr]);
    return i;
}

int QS(int st, int dr)
{
    if (st == dr)
        return nr[st];

    int indice = pivotare(st, dr);

    if (indice == k)
        return nr[indice];
    else if (k < indice)
        return QS(st, indice - 1);
    else
        return QS(indice + 1, dr);
}

int main()
{
    fin >> n >> k;

    nr.resize(n + 1);
    for(int i = 1; i <= n; i++)
        fin >> nr[i];

    fout << QS(1, n);
    return 0;
}