Cod sursa(job #1018916)

Utilizator tavi.belu1994FMI Belu Andrei Octavian tavi.belu1994 Data 30 octombrie 2013 09:16:44
Problema Statistici de ordine Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>
#include <cassert>
#include <cstdlib>
#include <ctime>

FILE *f,*g;

#define MAX_N 3000000

int n, k, arr[MAX_N];

void quickSort(long left, long right){

      long i = left, j = right;
      long tmp;
      long pivot = arr[left + rand() % ( right - left + 1 )];
      while (i <= j)
      {
            while (arr[i] < pivot)
                  i++;
            while (arr[j] > pivot)
                  j--;
            if (i <= j)
            {
                  tmp = arr[i];
                  arr[i] = arr[j];
                  arr[j] = tmp;
                  i++;
                  j--;
            }
      }
      if (left < j)
            quickSort(left, j);
      else
            quickSort(i, right);
}

int main(){
f=fopen("sdo.in","r");
g=fopen("sdo.out","w");
assert( fscanf( f, "%d%d", &n, &k ) == 2 );
for (int i=1;i<=n;i++)
    assert( fscanf( f, "%d", &arr[i] ) == 1 );
fclose(f);
quickSort(1,n);
fprintf(g,"%d",arr[k]);
fclose(g);
return 0;
}