Cod sursa(job #660113)

Utilizator blue_phoenixPosea Elena blue_phoenix Data 11 ianuarie 2012 19:06:50
Problema Statistici de ordine Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#include <stdlib.h>
#define nmax 3000010

int v[nmax];
int k;

void quick(int li, int ls){
    int i=li,j=ls,pivot=v[li + rand() % (ls-li+1)];
    int aux;
    while(i<=j){
       while(v[i]<pivot)i++;
       while(v[j]>pivot)j--;
       if(i<=j){
         aux=v[i];
         v[i]=v[j];
         v[j]=aux;
         i++;
         j--;
       }
    }
    if(li<j)quick(li,j);
    if(i<ls)
      if(i<k)quick(i,ls);
}

int main(){
  int i,n;
  FILE *fin=fopen("sdo.in","r");
  fscanf(fin,"%d%d",&n,&k);
  for(i=0;i<n;i++){
     fscanf(fin,"%d",&v[i]);    
  }
  fclose(fin);
  quick(0,n-1);
//printf("%d\n",RAND_MAX);
  FILE *fout=fopen("sdo.out","w");
  fprintf(fout,"%d\n",v[k-1]);
  fclose(fout);
return 0;
}