Cod sursa(job #1362183)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 26 februarie 2015 10:52:36
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<cstdio>
#include<string>

using namespace std;

#ifdef HOME
const string inputFile = "input.txt";
const string outputFile = "output.txt";
#else
const string problemName = "algsort";
const string inputFile = problemName + ".in";
const string outputFile = problemName + ".out";
#endif

const int NMAX = 500000 + 5;

int N;
int V[NMAX];
int aux[NMAX];

void mergesort(int V[], int lo, int hi) {
    if(lo >= hi)
        return;

    int mi = (lo + hi) / 2;

    mergesort(V, lo, mi + 0);
    mergesort(V, mi + 1, hi);

    int i, j, k;

    for(i = k = lo, j = mi + 1; i <= mi || j <= hi; )
        if(V[i] <= V[j] || j > hi)
            aux[k++] = V[i++];
        else
            aux[k++] = V[j++];

    for(i = lo; i <= hi; i++)
        V[i] = aux[i];
}

int main() {
    int i;

    freopen(inputFile.c_str(), "r", stdin);
    freopen(outputFile.c_str(), "w", stdout);

    scanf("%d", &N);

    for(i = 1; i <= N; i++)
        scanf("%d", &V[i]);

    mergesort(V, 1, N);

    for(i = 1; i <= N; i++)
        printf("%d ", V[i]);

    return 0;
}