Cod sursa(job #2897644)

Utilizator BluThund3rRadu George BluThund3r Data 4 mai 2022 14:18:21
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;

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

const int Nmax = 5e5 + 5;
int v[Nmax], n, temp[Nmax];

void mergesort(int st, int dr)
{
    if(st < dr)
    {
        int middle = (st + dr)/2;
        mergesort(st, middle);
        mergesort(middle + 1, dr);

        int i = st, j = middle + 1, k = 0;
        while(i <= middle && j <= dr)
        {
            if(v[i] < v[j])
                temp[++ k] = v[i ++];
            else
                temp[++ k] = v[j ++];
        }

        while(i <= middle)
            temp[++ k] = v[i ++ ];
        while(j <= dr)
            temp[++ k] = v[j ++];

        for(i = dr; i >= st; -- i)
            v[i] = temp[k --];
    }
}

int main() {
    in >> n;
    for(int i = 0; i < n; ++ i)
        in >> v[i];
    mergesort(0, n - 1);
    for(int i = 0; i < n; ++ i)
        out << v[i] << ' ';
    return 0;
}