Cod sursa(job #2676100)

Utilizator AlexNicuNicu Alexandru AlexNicu Data 23 noiembrie 2020 15:22:55
Problema Statistici de ordine Scor 10
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.99 kb
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
void qsort1(int v[], int k, int begin, int end) {
  int pivot, c;
  int b = begin, e = end;
  while ( begin < end ) {
    pivot = v[begin + rand() % (end - begin + 1)];
    while (v[b] < pivot)
      b++;
    while (v[e] > pivot)
      e--;
    while(b < e) {
      c = v[b];
      v[b] = v[e];
      v[e] = c;
      do
        b++;
      while (v[b] < pivot);
      do
        e--;
      while (v[e] > pivot);
    }
    if ( k <= e )
      end = e;
    else
      begin = b + 1;
  }
}
#define NMAX 3000000
int v[NMAX];
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 );
    srand(time(NULL));
    for ( i = 0; i < n; i++ ) {
     fscanf ( fin, "%d", &v[i] );
    }
    qsort1(v, k, 0, n - 1);
    fprintf( fout, "%d", v[k - 1] );
    fclose(fin);
    fclose(fout);
    return 0;
}