Cod sursa(job #1243095)

Utilizator pulseOvidiu Giorgi pulse Data 15 octombrie 2014 16:42:14
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 500005;

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

int N, A[MAXN], B[MAXN];

void MergeSort(int l, int r)
{
    int m = (l + r) >> 1, i, j, k;
    if (l == r) return;
    MergeSort(l, m);
    MergeSort(m + 1, r);
    for (i = l, j = m + 1, k = l; i <= m || j <= r; )
        if (j > r || (i <= m && A[i] < A[j]))
            B[k++] = A[i++];
        else
            B[k++] = A[j++];
    for (k = l; k <= r; ++k) A[k] = B[k];
}

int main()
{
    fin >> N;
    for (int i = 1; i <= N; ++i) fin >> A[i];
    MergeSort(1, N);
    for (int i = 1; i <= N; ++i) fout << A[i] << " ";
    fin.close();
    fout.close();
    return 0;
}