Cod sursa(job #3336124)

Utilizator AlekuwAlexandru Stefan Pascut Alekuw Data 24 ianuarie 2026 11:49:52
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("sdo.in");
ofstream out("sdo.out");

const int NMAX = 3e6 + 1;

int v[NMAX], w[NMAX];

void interclasare(int st, int mid, int dr) {
    int i = st, j = mid + 1, k = st;
    while (i <= mid && j <= dr) {
        if (v[i] < v[j])
            w[k++] = v[i++];
        else
            w[k++] = v[j++];
    }
    while (i <= mid)
        w[k++] = v[i++];
    while (j <= dr)
        w[k++] = v[j++];
    for (i = st; i <= dr; ++i)
        v[i] = w[i];
}

void mergesort(int st, int dr) {
    if (st < dr) {
        int mid = st + (dr - st) / 2;
        mergesort(st, mid);
        mergesort(mid + 1, dr);
        interclasare(st, mid, dr);
    }
}

int main()
{
    int n, k;
    in >> n >> k;
    for (int i = 0; i < n; ++i)
        in >> v[i];
    mergesort(0, n - 1);
    out << v[k - 1];
    return 0;
}