Cod sursa(job #1018923)

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

FILE *f,*g;

#define MAX_N 3000010

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