Cod sursa(job #3312005)

Utilizator StefanStangaStefan Stanga StefanStanga Data 25 septembrie 2025 13:11:15
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <fstream>

using namespace std;

ifstream cin("sdo.in");
ofstream cout("sdo.out");

int OUT = -1;

void helper(int arr[], int n, int i, int k)
{
    int max = i, l = 2 * i + 1, r = 2 * i + 2;
    if (l < n && arr[l] > arr[max])
        max = l;

    if (r < n && arr[r] > arr[max])
        max = r;

    if (max != i)
    {
        int temp = arr[i];
        arr[i] = arr[max];
        arr[max] = temp;

        if(k == 0)
        {
            OUT = arr[max];
        }
        else
        {
            helper(arr, n, max,k);
        }
    }
}

void ordonare(int arr[], int n, int k)
{
    for (int i = n / 2 - 1; i >= 0; --i)
        helper(arr, n, i,k);

    for (int i = n - 1; i >= 0; --i)
    {
        int temp = arr[0];
        arr[0] = arr[i];
        arr[i] = temp;

        //cout << i << " " << temp;
        //cout << '\n';

        if(i == k - 1){
            OUT = temp;
            break;
        }

        helper(arr, i, 0,k);
    }
}

int main()
{
    int n,k;
    cin >> n >> k;
    int v[n + 1];

    for(int i = 0; i<n; i++)
    {
        cin>>v[i];
    }

    ordonare(v,n,k);

    cout << OUT;

    return 0;
}