Cod sursa(job #3265062)

Utilizator Barbu_MateiBarbu Matei Barbu_Matei Data 26 decembrie 2024 18:15:03
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;

int n, k;
int v[3000001];

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

int main() {
    ifstream cin("sdo.in");
    ofstream cout("sdo.out");
    cin >> n >> k;
    for (int i = 1; i <= n; ++i) {
        cin >> v[i];
    }
    //quicksort(1, n);
    nth_element(v + 1, v + k, v + 1 + n);
    cout << v[k];
}