Cod sursa(job #3125738)

Utilizator usureluflorianUsurelu Florian-Robert usureluflorian Data 4 mai 2023 12:05:24
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f ("file.in");
ofstream g ("file.out");

const int nmax = 5e5 + 3;

int t1, t2, v[nmax], n;

void mgsort(int st, int dr)
{
    if (st == dr)
        return;

    int mid = st + (dr - st) / 2;

    mgsort(st, mid);
    mgsort(mid + 1, dr);

    vector <int> usu;

    t1 = st;
    t2 = mid + 1;

    while (true)
    {
        if (t1 < mid + 1 && t2 < dr + 1)
        {
            if (v[t1] <= v[t2])
            {
                usu.push_back(v[t1]);
                ++t1;
            }

            else
            {
                usu.push_back(v[t2]);
                ++t2;
            }
            continue;
        }

        if (t1 < mid + 1)
        {
            usu.push_back(v[t1]);
            ++t1;
            continue;
        }
        if (t2 < dr + 1)
        {
            usu.push_back(v[t2]);
            ++t2;
            continue;
        }
        break;
    }

    for (int i = 0; i < usu.size(); ++i)
    {
        v[st + i] = usu[i];
    }
}

int main()
{
    f >> n;

    for (int i = 1; i <= n; ++i)
        f >> v[i];

    mgsort(1, n);

    for (int i = 1; i <= n; ++i)
        g << v[i] << ' ';

    return 0;
}