Cod sursa(job #1287503)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 7 decembrie 2014 18:48:39
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <bits/stdc++.h>

using namespace std;

const int Nmax = 3000005 + 1;

int A[Nmax];

int N, K;

void quicksort( int l, int r, int k )
{
    int i = l, j = r, pivot = A[l + rand() % (r - l + 1)];

    do
    {
        while ( A[i] < pivot ) i++;
        while ( A[j] > pivot ) j--;

        if ( i <= j )
        {
            swap( A[i], A[j] );
            i++;
            j--;
        }

    } while ( i < j );

    if ( l < j && j >= k )
        quicksort( l, j, k );

    if ( i < r && i <= k )
        quicksort( i, r, k );
}

int main()
{
    ifstream in("sdo.in");
    ofstream out("sdo.out");

    srand( time( NULL ) );
    ios_base::sync_with_stdio( false );

    in >> N >> K;

    for ( int i = 1; i <= N; ++i )
        in >> A[i];

    quicksort( 1, N, K );

    out << A[K];

    return 0;
}