Cod sursa(job #2624279)

Utilizator roxana1708Roxana Gherghina roxana1708 Data 4 iunie 2020 17:44:41
Problema Statistici de ordine Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <stdlib.h>

using namespace std;
int v[3000001], n, k;

void swap(int *x, int *y){
    int temp = *x;
    *x = *y;
    *y = temp;
}

int partition(long int l, long int r){

    int pivot = v[l + (rand() % (r - l + 1))];
    int i = l-1;

    for (int j = l; j < r; j++){
        if(v[j] <= pivot){
            i++;
            swap(&v[i], &v[j]);
        }
    }

    swap(&v[i+1], &v[r]);
    return i+1;
}

void quickSort(long int st, long int dr){

    if(st < dr){
        int ind_pivot = partition(st, dr);

        quickSort(st, ind_pivot - 1);
        quickSort(ind_pivot + 1, dr);
    }
}

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

    f >> n >> k;

    for(int i = 0; i < n; i++)
        f >> v[i];

    quickSort(0, n);

    g << v[k-1];
    return 0;
}