Cod sursa(job #3326745)

Utilizator Seba1030Banescu Stefan Sebastian Seba1030 Data 30 noiembrie 2025 12:08:48
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>

const int MAXN = 3000000;

using namespace std;

int v[MAXN + 5];

void qs ( int v[], int begin, int end ) {
    int pivot = v[begin + rand() % ( end - begin + 1 )];
    
    int b = begin, e = end;
    while ( v[b] < pivot ) 
        b++;
    
    while ( v[e] > pivot )
        e--;
    
    while ( b < e ) {
        swap ( v[b], v[e] );
    
        do
            b++;
        while ( v[b] < pivot );
    
        do 
            e--;
        while ( v[e] > pivot );
    }
    
    if ( begin < e )
        qs ( v, begin, e );
    if ( e + 1 < end )
        qs ( v, e + 1, end );
}

int main() {
    ifstream fin( "sdo.in" );
    ofstream fout( "sdo.out" );
    int n, k;
    fin >> n >> k;
    for ( int i = 0; i < n; i++ ) {
        fin >> v[i];
    }
    qs ( v, 0, n - 1 );
    fout << v[k - 1];

    return 0;
}