Cod sursa(job #2059868)

Utilizator TincaMateiTinca Matei TincaMatei Data 7 noiembrie 2017 18:18:16
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

const int MAX_N = 500000;
int v[MAX_N];
int aux[MAX_N];

void mergesort(int st, int dr) {
  int mid = (st + dr) / 2;
  if(mid - st > 1) mergesort(st, mid);
  if(dr - mid > 1) mergesort(mid, dr);
  merge(v + st, v + mid, v + mid, v + dr, aux + st);
  for(int i = st; i < dr; ++i)
    v[i] = aux[i];
}

int main() {
  int n;
  FILE *fin = fopen("algsort.in", "r");
  fscanf(fin, "%d", &n);
  for(int i = 0; i < n; ++i)
    fscanf(fin, "%d", &v[i]);
  fclose(fin);

  mergesort(0, n);
  printf("~\n");

  FILE *fout = fopen("algsort.out", "w");
  for(int i = 0; i < n; ++i)
    fprintf(fout, "%d ", v[i]);
  fclose(fout);
  return 0;
}