Cod sursa(job #3336091)

Utilizator adidavidDumitrascu Adrian David adidavid Data 24 ianuarie 2026 10:13:41
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("sdo.in");
ofstream fout("sdo.out");

int v[3000001];

int partitionare(int st, int dr) {
    int pivot = v[st];
    int i = st, j = dr;

    while (i < j) {
        while (i < j && v[j] >= pivot) j--;
        v[i] = v[j];
        while (i < j && v[i] <= pivot) i++;
        v[j] = v[i];
    }

    v[i] = pivot;
    
    return i;
}

int quicksort(int st, int dr, int k) {
    if (st == dr)
        return v[st];

    int p = partitionare(st, dr);

    if (p == k)
        return v[p];
        
    if (k < p)
        return quicksort(st, p - 1, k);
        
    return quicksort(p + 1, dr, k);
}

int main() {
    int n, k;
    fin >> n >> k;

    for (int i = 0; i < n; i++)
        fin >> v[i];

    fout << quicksort(0, n - 1, k - 1);
    
    return 0;
}