Cod sursa(job #3175407)

Utilizator DariusHHanganu Darius DariusH Data 25 noiembrie 2023 19:11:51
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("sdo.in");
ofstream fout("sdo.out");

#define N_MAX 3000000
int v[N_MAX];

void quicksort(int k, int l, int r) {
  int pivot = v[(l + r) / 2];

  int b = l, e = r;
  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 (l < e && k <= e)
    quicksort(k, l, e);
  else if (e + 1 < r)
    quicksort(k, e + 1, r);
}

int main()
{
  int n, k, i;
  fin >> n >> k;
  for(i = 0; i < n; ++i) {
    fin >> v[i];
  }
  quicksort(k - 1, 0, n - 1);
  fout << v[k - 1] << '\n';

  fin.close();
  fout.close();

  return 0;
}