Cod sursa(job #2975252)

Utilizator vladburacBurac Vlad vladburac Data 5 februarie 2023 22:16:43
Problema Statistici de ordine Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 3e6;

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

int v[MAXN];
void qsort(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 )
    qsort( v, k, begin, e);
  else if( e + 1 < end )
    qsort( v, k, e + 1, end) ;
}
int main() {
  int n, k, i;
  fin >> n >> k;
  for( i = 0; i < n; i++ )
    fin >> v[i];
  qsort( v, k - 1, 0, n - 1 );
  fout << v[k-1];
  return 0;
}