Cod sursa(job #2183481)

Utilizator AndreiSorin26012001Cirpici Andrei Sorin AndreiSorin26012001 Data 23 martie 2018 10:43:24
Problema Statistici de ordine Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, k, p, aux;
int arr[3000005];

int poz( int st, int dr )
{
    int d_st = 0, d_dr = -1;

    while( st != dr )
    {
        if( arr[st] > arr[dr] )
        {
            swap( arr[st], arr[dr] );
            aux = d_st;
            d_st = -d_dr;
            d_dr = -aux;
        }

        st += d_st;
        dr += d_dr;
    }

    return st;
}

void sorteaza( int st, int dr, int t )
{
    if( st < dr )
    {
        p = poz( st, dr );

        if( p > t )
           sorteaza( st, p - 1, t );
        else if( p < t )
           sorteaza( p + 1, dr, t );
        else
            return;

    }
}

int main()
{
    in>>n>>k;
    for( int i = 1; i <= n; i++ )
        in>>arr[i];

    /*srand( time(0) );
    for( int i = n; i >= 2; i-- )
        swap( arr[i], arr[ 1 + rand()%(i-1) ] );*/

    sorteaza( 1, n, k );

    out<<arr[k];

    return 0;
}