Cod sursa(job #2898339)

Utilizator madalin1902Florea Madalin Alexandru madalin1902 Data 6 mai 2022 16:43:45
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");

int a[500001], n, aux[500001];

void interclasare(int st, int m, int dr)
{
    int i = st, j = m+1, k = st;
    while(i <= m && j <= dr) {
        if(a[i] < a[j]){
            aux[k] = a[i];
            i++; k++;
        }
        else{
            aux[k] = a[j];
            j++; k++;
        }
    }
    while(i <= m){
        aux[k] = a[i];
        i++; k++;
    }
    while(j <= dr){
        aux[k] = a[j];
        j++; k++;
    }
    for(i = st; i <= dr; i++)
        a[i] = aux[i];
}

void MergeSort(int st, int dr) {
    if(st < dr) {
        int m = (st + dr) / 2;
        MergeSort(st,m);
        MergeSort(m + 1,dr);
        interclasare(st, m, dr);
    }
}

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] << ' ';

    return 0;
}