Cod sursa(job #2619105)

Utilizator AlexVulpoiuAlexandru Vulpoiu AlexVulpoiu Data 26 mai 2020 23:17:41
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <fstream>

using namespace std;

int w[500005];

void interclasare(int v[], const int& st, const int& mij, const int& dr)
{
    int i, j, k;

    i = st;
    j = mij + 1;
    k = 0;
    while(i <= mij && j <= dr)
        if(v[i] <= v[j])
            w[k++] = v[i++];
        else
            w[k++] = v[j++];
    while(i <= mij)
        w[k++] = v[i++];
    while(j <= dr)
        w[k++] = v[j++];
    for(i = st; i <= dr; i++)
        v[i] = w[i - st];
}

void mergesort(int v[], const int& st, const int& dr)
{
    int mij;

    if(st >= dr)
        return;
    mij = (st + dr) / 2;
    mergesort(v, st, mij);
    mergesort(v, mij + 1, dr);
    interclasare(v, st, mij, dr);
}

int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");

    int n, i, a[500005];

    f >> n;
    for(i = 0; i < n; i++)
        f >> a[i];
    f.close();

    mergesort(a, 0, n - 1);

    for(i = 0; i < n; i++)
        g << a[i] << ' ';
    g << '\n';
    g.close();

    return 0;
}