Cod sursa(job #2938854)

Utilizator dobreraduDobre Radu Fabian dobreradu Data 12 noiembrie 2022 17:43:26
Problema Statistici de ordine Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int v[100001] , k ;
void nth(int a[], int st, int dr ){
  if( st >= dr )
    return ;
  int piv = ( rand() % (dr-st+1) ) + st ;
  swap( a[piv] , a[dr] );
  int freeuse = st;
  for( int i = st ; i < dr ; i++ ){
    if( a[i] < a[dr] )
      swap( a[freeuse++] , a[i] );
  }
  swap( a[dr] , a[freeuse]);
  if( freeuse == k )
    return ;
  if( freeuse > k )
    nth( a , st , freeuse - 1 );
  else
    nth( a , freeuse + 1, dr);
}
int main()
{
    ifstream in("sdo.in");
    ofstream out("sdo.out");
    int n ;
    in >> n >> k ;
    for( int i = 1 ; i <= n ; i++ )
      in >> v[i];
    nth( v , 1 , n );
    out << v[k] ;
    return 0;
}