Cod sursa(job #3311998)

Utilizator StefanStangaStefan Stanga StefanStanga Data 25 septembrie 2025 13:00:34
Problema Statistici de ordine Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>

using namespace std;

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

void helper(int arr[], int n, int i)
{
    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;
        helper(arr, n, max);
    }
}

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

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

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);

    for(int i = 0;i<n;i++){
        if(i == k - 1){
            cout << v[i];
            break;
        }
    }

    return 0;
}