Cod sursa(job #1454049)

Utilizator oanaroscaOana Rosca oanarosca Data 25 iunie 2015 13:01:22
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
#include <cstring>

using namespace std;

int i, n, a[500001], b[500001];

void sortare (int s, int d) {
  int m, cont = 0, i, j;

  if (s != d) {
    m = (s+d)/2;
    sortare (s, m);
    sortare(m+1, d);
    for (i = s, j = m+1; i <= m and j <= d;)
      if (a[i] < a[j])
        b[++cont] = a[i], i++;
      else
        b[++cont] = a[j], j++;
    for (; i <= m; i++)
      b[++cont] = a[i];
    for (; j <= d; j++)
      b[++cont] = a[j];
    memcpy(a+s, b+1, sizeof(int)*(d-s+1));
  }
}

int main () {
  ifstream fi("algsort.in");
  ofstream fo("algsort.out");
  fi >> n;
  for (i = 1; i <= n; i++)
    fi >> a[i];
  sortare(1, n);
  for (i = 1; i <= n; i++)
    fo << a[i] << ' ';
  return 0;
}