Cod sursa(job #2702912)

Utilizator Tudor_StefanaStefana Tudor Tudor_Stefana Data 6 februarie 2021 12:06:07
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.22 kb
#include <fstream>

using namespace std;

ifstream cin ("algsort.in");
ofstream cout ("algsort.out");

int v[500001], c[500001];

void MSort (int left,int right)
{
    if (left==right)
    {
        return;
    }
    MSort(left,(right+left)/2);
    MSort((left+right)/2+1,right);
    int a=left,b=(left+right)/2+1;
    for (int i=left; i<=right; i++)
    {
        if (a>(left+right)/2)
        {
            for (int j=i; j<=right; j++)
            {
                c[j]=v[b];
                b++;
            }
            break;
        }
        else if (b>right)
        {
            for (int j=i; j<=right; j++)
            {
                c[j]=v[a];
                a++;
            }
            break;
        }
        else if (v[a]<=v[b])
        {
            c[i]=v[a];
            a++;
        }
        else if (v[a]>v[b])
        {
            c[i]=v[b];
            b++;
        }
    }
    for (int i=left; i<=right; i++)
    {
        v[i]=c[i];
    }
}

int main()
{
    int n;
    cin >> n;
    for (int i=1; i<=n; i++)
    {
        cin >> v[i];
    }
    MSort(1,n);
    for (int i=1; i<=n; i++)
    {
        cout << c[i] << " ";
    }
    return 0;
}