Cod sursa(job #2870631)

Utilizator elenacurecheriuElena Curecheriu elenacurecheriu Data 12 martie 2022 14:34:41
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#pragma GCC optimize ("Ofast")

using namespace std;

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

int n, v[500005], h[500005];

void merge_sort(int st, int dr)
{
    if(st >= dr)
        return;
    if(st+1 == dr)
    {
        if(v[st]>v[dr])
            swap(v[st], v[dr]);
        return;
    }
    int mij = (st+dr+1)/2;
    merge_sort(st, mij);
    merge_sort(mij+1, dr);
    int i = st, j = mij+1, k = st;
    while(i <= mij || j <= dr)
    {
        if(j > dr || (i <= mij && v[i] < v[j]))
            h[k]=v[i], i++;
        else
            h[k]=v[j], j++;
        k++;
    }
    for(int i=st; i<=dr; i++)
        v[i]=h[i];
}

int main()
{
    fin>>n;
    for(int i=1; i<=n; i++)
        fin>>v[i];
    merge_sort(1, n);
    for(int i=1; i<=n; i++)
        fout<<v[i]<<" ";
    return 0;
}