Cod sursa(job #2774691)

Utilizator Edyci123Bicu Codrut Eduard Edyci123 Data 12 septembrie 2021 13:38:03
Problema Statistici de ordine Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
#define DIM 3000005

using namespace std;

ifstream f("sdo.in");
ofstream g("sdo.out");

int n, k, v[DIM], rez;

int solve(int st, int dr)
{
    if(st < dr)
    {
        int pivot = st + (rand() % (dr - st + 1));
        swap(v[pivot], v[dr]);
        int i = st, j = st;
        while(j < dr)
        {
            if(v[j] < v[dr])
                swap(v[j], v[i]), i++;
            j++;
        }
        swap(v[i], v[dr]);
        if(i > k)
            return solve(st, i - 1);
        else if(i < k)
            return solve(i + 1, dr);
        else
            return v[i];
    }
}

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

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

    g << solve(1, n);

    return 0;
}