Cod sursa(job #378096)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 27 decembrie 2009 15:38:45
Problema Statistici de ordine Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
# include <cstdio>
# include <time.h>
# include <stdlib.h>

using namespace std;

# define FIN "sdo.in"
# define FOUT "sdo.out"
# define MAX_N 3000005

int N, K, i;
int V[MAX_N];

    void sort(int st, int dr, int k)
    {
        int i = st, j = dr, piv = V[rand() % (dr - st + 1) + st];
        
        while (i <= j)
        {
              while (V[i] < piv) ++i;
              while (V[j] > piv) --j;
              if (i <= j)
              {
                    int ax = V[i];
                    V[i] = V[j];
                    V[j] = ax;
                    ++i; --j;
              }
        }
        
        if (st < j && st <= k && k <= j) sort(st, j, K);
        if (i < dr && i <= k && k <= dr) sort(i, dr, K);
    }

    int main()
    {
        freopen(FIN, "r", stdin);
        freopen(FOUT, "w", stdout);
        
        srand(time(NULL));
        
        scanf("%d%d", &N, &K);
        for (i = 1; i <= N; ++i) scanf("%d", &V[i]);
        
        sort(1, N, K);
        
        printf("%d", V[K]);
        
        return 0;
    }