Cod sursa(job #2715080)

Utilizator toma_ariciuAriciu Toma toma_ariciu Data 2 martie 2021 22:38:01
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>

using namespace std;

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

const int mult=500000;
int nr_elem, v[mult + 5], h[mult + 5];

void citire()
{
    fin>>nr_elem;
    nr_elem--;
    for(int i=0; i<=nr_elem; i++)
        fin>>v[i];
}

void mergesort(int st, int dr)
{
    if(st>=dr)
        return;
    if(st+1==dr)
    {
        if(v[st]>v[dr])
            swap(v[st], v[dr]);
        return;
    }
    int med=(st+dr+1)/2;
    mergesort(st, med);
    mergesort(med+1, dr);
    int i=st, j=med+1, k=st;
    while(i <= med || j <= dr)
    {
        if(j>dr || (i<=med && v[i] < v[j]))
        {
            h[k]=v[i];
            i++;
        }
        else
        {
            h[k]=v[j];
            j++;
        }
        k++;
    }
    for(i=st; i<=dr; i++)
        v[i]=h[i];
}

void afisare()
{
    for(int i=0; i<=nr_elem; i++)
        fout<<v[i]<<' ';
}

int main()
{
    citire();
    mergesort(0, nr_elem);
    afisare();
    return 0;
}