Cod sursa(job #3152081)

Utilizator TeddyDinutaDinuta Eduard Stefan TeddyDinuta Data 23 septembrie 2023 18:43:50
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
int n, k, a[3000005];

int main()
{
    in >> n >> k;
    for (int i = 1; i <= n; i++)
        in >> a[i];

    int l = 1, r = n;
    while (1) {
        int m = l + rand() % (r - l + 1);
        int piv = a[m];

        int j = l;
        swap(a[m], a[r]);
        for (int i = l; i < r; i++){
            if (a[i] <= piv) {
                swap(a[i], a[j]);
                j++;
            }
        }
        swap(a[j], a[r]);

        if (j == k) {
            out << a[j] << '\n';
            break;
        }

        if (j > k)
            r = j - 1;
        else
            l = j + 1;
    }

    return 0;
}