Cod sursa(job #2752109)

Utilizator Alex_tz307Lorintz Alexandru Alex_tz307 Data 16 mai 2021 18:16:24
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

const int MAXN = 5e5;
int a[MAXN], aux[MAXN];

void merge_sort(int l, int r) { /// capetele secventei ce o sortam din vectorul initial
  if (l == r)
    return;
  int mid = (l + r) >> 1, p1 = l, p2 = mid + 1, p = l;
  merge_sort(l, mid);
  merge_sort(mid + 1, r);
  while (p1 <= mid && p2 <= r)
    if (a[p1] < a[p2])
      aux[p++] = a[p1++];
    else aux[p++] = a[p2++];
  while (p1 <= mid)
    aux[p++] = a[p1++];
  while (p2 <= r)
    aux[p++] = a[p2++];
  for (int i = l; i <= r; ++i)
    a[i] = aux[i];
}

int main() {
  int N;
  fin >> N;
  for (int i = 0; i < N; ++i) /// citire vector(indexat de la 0)
    fin >> a[i];
  merge_sort(0, N - 1); /// sortare vector
  for (int i = 0; i < N; ++i) /// afisare vector
    fout << a[i] << ' ';
  fout << '\n';
  return 0;
}