Cod sursa(job #2910589)

Utilizator andreea_eliza_8Radu Andreea Eliza andreea_eliza_8 Data 22 iunie 2022 16:09:26
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
vector <int> ic;
int v[500005];

void interclasare(int lf, int med, int rg)
{
    int st1=lf, dr1=med, st2=med+1, dr2=rg;
    for(int i=st1; i<=dr1; i++)
    {
        while(v[st2]<v[i] && st2<=dr2)
        {
            ic.push_back(v[st2]);
            st2++;
        }
        ic.push_back(v[i]);
    }
    while(st2<=dr2)
    {
        ic.push_back(v[st2]);
        st2++;
    }
    for(int i=lf; i<=rg; i++)
        v[i]=ic[i-lf];
    ic.clear();
}

void mergesort(int lf, int rg)
{
    if(rg==lf)
        return;
    int med=(lf+rg)/2;
    mergesort(lf, med);
    mergesort(med+1, rg);
    interclasare(lf, med, rg);
}

int main()
{
    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;
}