Cod sursa(job #2142150)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 24 februarie 2018 19:43:01
Problema Statistici de ordine Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<iostream>
#include<cstdlib>
#include<time.h>
#include<algorithm>
#include<vector>
using namespace std;

void sdo(vector<int> &A, int K, int start, int end) {
    int p = start + rand() % (end - start + 1);
    int aux = A[p]; A[p] = A[end]; A[end] = aux;
    int i = start;

    for (int j = start; j < end; j++) {
        if (A[j] < A[end]) {
            aux = A[i]; A[i] = A[j]; A[j] = aux;
            i++;
        }
    }
    aux = A[i]; A[i] = A[end]; A[end] = aux;
    
    p = i;
    if (p == K) return;
    if (p < K) sdo(A, K, p + 1, end);
    else sdo(A, K, start, p - 1);
}

int main() {
    freopen("sdo.in", "r", stdin);
    freopen("sdo.out", "w", stdout);
    
    srand(time(0));

    int N, K;
    cin>>N>>K;

    vector<int> A(N);
    for (int i = 0; i < N; i++) {
        cin >> A[i];
    }
    sdo(A, K-1, 0, N-1);
    cout << A[K-1];

    return 0;
}