Cod sursa(job #2514980)

Utilizator alex_benescuAlex Ben alex_benescu Data 27 decembrie 2019 15:03:55
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#define L 500003
using namespace std;
int v[L], n, w[L];
void merge_sort(int st, int dr){
  int i, j, mij, q;
  if(st>=dr)
    return;
  mij=(dr+st)/2;
  merge_sort(st, mij);
  merge_sort(mij+1, dr);
  i=q=st;
  j=mij+1;
  while(i<=mij && j<=dr)
    if(v[i]>v[j])
      w[q++]=v[j++];
    else
      w[q++]=v[i++];
  while(i<=mij)
    w[q++]=v[i++];
  while(j<=dr)
    w[q++]=v[j++];
  for(i=st; i<=dr; i++)
    v[i]=w[i];
}
int main(){
  FILE *fin, *fout;
  int i;
  fin=fopen("algsort.in", "r");
  fout=fopen("algsort.out", "w");
  fscanf(fin, "%d", &n);
  for(i=1; i<=n; i++)
    fscanf(fin, "%d", &v[i]);
  merge_sort(1, n);
  for(i=1; i<=n; i++)
    fprintf(fout, "%d ", v[i]);
  fclose(fin);
  fclose(fout);
  return 0;
}