Cod sursa(job #2630197)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 24 iunie 2020 17:17:14
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <bits/stdc++.h>

using namespace std;

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

const int DIM = 1e6 + 7;

int v[DIM];
int aux[DIM];

void merge_sort(int l, int r)
{
    if(l == r)
        return ;

    int mid = (l + r) / 2;

    merge_sort(l, mid);
    merge_sort(mid + 1, r);

    int st = l;
    int dr = mid + 1;
    int it = 0;

    while(st <= mid || dr <= r)
    {
        if(dr > r)
        {
            aux[++it] = v[st++];
        }
        else
            if(st > mid)
            {
                aux[++it] = v[dr++];
            }
            else
            {
                if(v[st] <= v[dr])
                {
                    aux[++it] = v[st++];
                }
                else
                {
                    aux[++it] = v[dr++];
                }
            }
    }

    for(int i = r; i >= l; --i)
    {
        v[i] = aux[it--];
    }
}

main()
{
    int n;
    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] << ' ';
}