Cod sursa(job #2000553)

Utilizator vladm98Munteanu Vlad vladm98 Data 14 iulie 2017 07:20:55
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>

using namespace std;
int v[500004];
int rezultat[500004];
void mergesort (int st, int dr)
{
    if (st == dr)
        return ;
    int mijloc = st+dr>>1;
    mergesort(st, mijloc);
    mergesort(mijloc+1, dr);
    int cnt_st = st;
    int cnt_dr = mijloc+1;
    for (int i = st; i<=dr; ++i)
    {
        if (cnt_dr>dr || (cnt_st<=mijloc && v[cnt_st] <= v[cnt_dr]))
        {
            rezultat[i] = v[cnt_st];
            ++cnt_st;
        }
        else
        {
            rezultat[i] = v[cnt_dr];
            ++cnt_dr;
        }
    }
    for (int i = st; i<=dr; ++i)
        v[i] = rezultat[i];
}
int main()
{
    ifstream fin ("algsort.in");
    ofstream fout ("algsort.out");
    int n;
    fin >> n;
    for (int i = 1; i<=n; ++i)
        fin >> v[i];
    mergesort(1, n);
    for (int i = 1; i<=n; ++i)
        fout << v[i] << " ";
    return 0;
}