Cod sursa(job #1465484)

Utilizator CollermanAndrei Amariei Collerman Data 27 iulie 2015 14:48:32
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <stdlib.h>
#include <time.h>
using namespace std;
ofstream fout("sdo.out");
ifstream fin("sdo.in");
const int NMAX = 3000010;

int v[NMAX], n, k;

void quicksort(int st, int dr)
{
    int i = st, j = dr, p = v[rand() % (dr - st + 1) + 1];

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

    if(st < j && k <= j) quicksort(st, j);
    if(i < dr && k >= i) quicksort(i, dr);
}

int main()
{
    srand(time(0));
    fin >> n >> k;
    k--;
    for(int i=0; i<n; i++) fin >> v[i];

    quicksort(0, n-1);
    fout << v[k] << '\n';
    return 0;
}