Cod sursa(job #2677016)

Utilizator KillHorizon23Orban Robert KillHorizon23 Data 25 noiembrie 2020 17:44:00
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int NMAX = 500005;
int n, v[NMAX], r[NMAX];
void MergeSort(int st, int dr)
{
  if (st >= dr)
    return;
  else
  {
    int mid = (st + dr) / 2;
    MergeSort(st, mid), MergeSort(mid + 1, dr);
    int x = st, y = mid + 1, i = 0;
    while (x <= mid && y <= dr)
    {
      if (v[x] <= v[y])
        r[++i] = v[x++];
      else
        r[++i] = v[y++];
    }
    while (x <= mid)
      r[++i] = v[x++];
    while (y <= dr)
      r[++i] = v[y++];
    for (i = st; i <= dr; ++i)
      v[i] = r[i - st + 1];
  }
}
int main()
{
  ios::sync_with_stdio(false);
  fin.tie(0);
  fin >> n;
  for (int i = 1; i <= n; ++i)
    fin >> v[i];
  MergeSort(1, n);
  for (int i = 1; i <= n; ++i)
    fout << v[i] << " ";
  return 0;
}