Cod sursa(job #1363708)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 27 februarie 2015 10:18:38
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

const int Nmax = 3000000 + 1;

int v[Nmax];
int N, K;

void QS(int st, int dr, int k)
{
    int i = st, j = dr, p = v[(i + j) / 2];

    do
    {
        while ( v[i] < p ) i++;
        while ( v[j] > p ) j--;

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

    } while(i < j);

    if ( i < dr && i <= K && K <= dr )
        QS(i, dr, k);

    if ( st < j && st <= K && K <= j )
        QS(st, j, k);
}

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

    ios_base::sync_with_stdio(false);

    in >> N >> K;

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

    QS(1, N, K);
    out << v[K] << "\n";

    return 0;
}