Cod sursa(job #3175399)

Utilizator DariusHHanganu Darius DariusH Data 25 noiembrie 2023 19:03:34
Problema Statistici de ordine Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 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 st = l, dr = r;
  while(v[st] < pivot) {
    ++st;
  }
  while(v[dr] > pivot) {
     --dr;
  }

  while(st < dr) {
    swap(v[st], v[dr]);

    do
      ++st;
    while(v[st] < pivot);

    do
      --dr;
    while(v[dr] > pivot);
  }

  if(l < dr && k <= dr) {
    quicksort(k, l, dr);
  }else if(dr + 1 < r) {
    quicksort(k, dr + 1, r);
  }
}

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

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

  return 0;
}