Cod sursa(job #2672009)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 12 noiembrie 2020 22:11:24
Problema Statistici de ordine Scor 70
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>
#include <stdlib.h>

int v[3000000];
int sort(int begin, int end, int k){
  int b=begin, e=end, pivot=v[(begin+end)/2],aux;
  while(v[b]<pivot)
    b++;
  while(v[e]>pivot)
    e--;

  while(b<e){
    aux=v[b];
    v[b]=v[e];
    v[e]=aux;

    do{
      b++;
    } while(v[b]<pivot);
    do{
      e--;
    } while(v[e]>pivot);
  }

  if(begin<e && k-1<=e)
    sort(begin,e,k);
  else if(e+1<end)
    sort(e+1,end,k);
}
int main(){
  int i,n,k;
  FILE *fin, *fout;
  fin=fopen("sdo.in","r");
  fscanf(fin,"%d%d",&n,&k);
  for(i=0;i<n;i++){
    fscanf(fin,"%d",&v[i]);
  }
  fclose(fin);

  sort(0,n-1,k);

  fout=fopen("sdo.out","w");
  fprintf(fout,"%d\n",v[k-1]);
  fclose(fout);
  return 0;
}