Cod sursa(job #3253387)

Utilizator mlupseLupse-Turpan Mircea mlupse Data 2 noiembrie 2024 14:14:48
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int NMax = 500000;
int N; int X[NMax + 5];
int Aux[NMax + 5];
void Mergesort(int Left, int Right)
{
    if(Left == Right)
        return;
    int Mid = (Left + Right) / 2;
    Mergesort(Left,Mid);
    Mergesort(Mid+1,Right);
    int i = Left,j = Mid + 1,k = Left;
    while(i<=Mid && j <= Right)
    {
        if(X[i] < X[j])
            Aux[k++] = X[i++];
        else
            Aux[k++] = X[j++];
    }
    while(i<=Mid)
        Aux[k++] = X[i++];
    while(j<=Right)
        Aux[k++] = X[j++];
    for(k = Left; k <= Right; k++)
        X[k] = Aux[k];
}
int main()
{
    fin >> N;
    for(int i = 1; i <= N; ++i)
        fin >> X[i];
    Mergesort(1,N);
    for(int i =1 ; i<=N; ++i)
        fout << X[i] << " ";
    return 0;
}