Cod sursa(job #2676097)

Utilizator AlexNicuNicu Alexandru AlexNicu Data 23 noiembrie 2020 15:17:28
Problema Statistici de ordine Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#include <stdlib.h>
void qsort1(int v[], int k, int begin, int end) {
  int pivot = v[(begin + end) / 2], c;
  int b = begin, e = end;
  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 (begin < e && k < e)
    qsort(v, k, begin, e);
  else if (e + 1 < end)
    qsort(v, k, e + 1, end);
}
#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 );
    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;
}