Cod sursa(job #2669887)

Utilizator Luca_Miscocilucainfoarena Luca_Miscoci Data 8 noiembrie 2020 13:04:26
Problema Statistici de ordine Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
#define NMAX 300000
int v[NMAX + 5];

void nth(int begin, int end,int ind){
  int pivot = v[(begin + end) /  2];
  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 && ind <= e)
    nth(begin, e,ind);
  if (e + 1 < end)
    nth(e + 1, end, ind);
}
int main(){
  FILE *fin,*fout;
  fin = fopen("sdo.in","r");
  fout = fopen("sdo.out","w ");
  int n, k, i;
  fscanf(fin ,"%d%d", &n ,&k);
  for(i = 0; i < n; i++){
    fscanf(fin,"%d",&v[i]);
  }
  nth(0,n - 1, --k);
  fprintf( fout,"%d" ,v[k]);
  return 0;
}