Cod sursa(job #1448873)

Utilizator UgleaEduFMI - Edward UgleaEdu Data 8 iunie 2015 08:18:34
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
#define MAXN 30000
using namespace std;

void nth( int v[], int poz, int init, int n )
{
    int aux = v[ init ];
    v[ init ] = v[ n - 1 ];
    v[ n - 1 ] = aux;
    int loc = 0;

    for( int j = 0; j < n; j++ )
    {
        if( v[ j ] < v[ n-1 ] )
        {
            aux = v[ j ];
            v[ j ] = v[ loc ];
            v[ loc++ ] = aux;
        }
    }
    if( loc != poz )
    {
        srand(time(NULL));
        init = rand()%n;
        nth( v, poz, init, n);
    }
    else
    {
        aux = v[ loc ];
        v[ loc ] = v[ n - 1 ];
        v[ n - 1 ] = aux;
    }

}
int main()
{
    ifstream f( "sdo.in");
    ofstream g( "sdo.out");
    int v[ MAXN ], n, k, i;

    f >> n >> k;
    for ( int i = 0; i < n; i++ )

        f >> v[ i ];
    srand(time(NULL));
    nth( v, k - 1, rand()%n , n);

    g << v[ k - 1 ];
    f.close();
    g.close();
    return 0;
}