Cod sursa(job #1018921)

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

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 (k<=j)
            return quickSort(left,j);
      else
      {
      if (left < j)
            quickSort(left, j);
      if (i < right)
            quickSort(i, right);
      }
}

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