Cod sursa(job #3326343)

Utilizator Cezar2009Cezar Mihai Titihazan Cezar2009 Data 28 noiembrie 2025 10:42:16
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
//https://infoarena.ro/problema/algsort

#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

const int NRMAX = 500000;

int v[NRMAX];

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

    int mij = (st + dr) / 2;
    mergesort(st, mij);
    mergesort(mij + 1, dr);

    int i = st, j = mij + 1;
    vector <int> newv;

    while (i <= mij || j <= dr)
    {
        if ((j > dr) || (v[i] < v[j] && i <= mij))
            newv.push_back(v[i++]);
        else
            newv.push_back(v[j++]);
    }

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

int main()
{
    int n, i;

    fin >> n;
    for (i = 0; i < n; ++i)
    {
        fin >> v[i];
    }

    mergesort(0, n - 1);

    for (i = 0; i < n; ++i)
    {
        fout << v[i] << " ";
    }

    return 0;
}