Cod sursa(job #2676106)

Utilizator AlexNicuNicu Alexandru AlexNicu Data 23 noiembrie 2020 15:27:18
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin( "sdo.in" );
ofstream cout( "sdo.out" );

const int NMAX = 3e6;
int v[NMAX + 1];

void qsort1(int v[], int k, int begin, int end) {
  int pivot = v[begin + rand() % (end - begin + 1)];
  int b = begin, e = end;
  while (v[b] < pivot)
    b++;
  while (v[e] > pivot)
    e--;
  while(b < e) {
    swap(v[b], v[e]);
    do
      b++;
    while (v[b] < pivot);
    do
      e--;
    while (v[e] > pivot);
  }
  if (begin < e && k < e)
    qsort1(v, k, begin, e);
  else if (e + 1 < end)
    qsort1(v, k, e + 1, end);
}
int main() {
  int n, k, i;
  cin >> n >> k;
  for( i = 0; i < n; ++i )
    cin >> v[i];
  qsort1(v, k - 1, 0, n - 1);
  cout << v[k - 1];
  return 0;
}