Cod sursa(job #3350367)

Utilizator BaraianTudorBaraian Tudor Stefan BaraianTudor Data 7 aprilie 2026 13:10:52
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <queue>
#include <fstream>
#include <map>
#include <cstring>
#include <stack>
#include <ctime>
#include <cstdlib>
#define N_MAX 3000005
#define MOD 666013
using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");
int n, k;
int a[N_MAX];
int find_kth(int l, int r) {
    int part_ind = l + rand() % (r - l + 1);
    int pivot = a[part_ind];
    int i = l - 1;
    for (int j = l; j <= r; j++) {
        if (a[j] < pivot) {
            swap(a[j], a[++i]);
            if (i == part_ind)part_ind = j;
        }
    }
    swap(a[++i], a[part_ind]);
    if (i == k - 1)return a[i];
    if (i < k - 1)return find_kth(i + 1, r);
    return find_kth(l, i - 1);
}
int main()
{
    srand(time(0));
    in >> n >> k;
    for (int i = 0; i < n; i++) {
        in >> a[i];
    }
    out << find_kth(0, n - 1);
    return 0;
}