Cod sursa(job #3285884)

Utilizator crina2120Arnautu Cristina-Crina crina2120 Data 13 martie 2025 15:39:03
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>
using namespace std;

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

int a[500003], b[500003], n;

void Intercl(int st, int m, int dr)
{
    int i, j, k;
    k = st;
    i = st; j = m + 1;
    while (i <= m && j <= dr)
        if (a[i] <= a[j]) b[k++] = a[i++];
        else b[k++] = a[j++];
    while (i <= m) b[k++] = a[i++];
    while (j <= dr) b[k++] = a[j++];
    for (i = st; i <= dr; i++)
        a[i] = b[i];
}

void MergeSort(int st, int dr)
{
    if (dr - st <= 1)
    {
        if (a[st] > a[dr]) swap(a[st], a[dr]);
    }
    else
    {
        int m = (st + dr) / 2;
        MergeSort(st, m);
        MergeSort(m + 1, dr);
        Intercl(st, m, dr);
    }
}

int main()
{
    int i;
    fin >> n;
    for (i = 1; i <= n; i++)
        fin >> a[i];
    MergeSort(1, n);
    for (i = 1; i <= n; i++)
        fout << a[i] << " ";
    return 0;
}

//0, 1, 3-5, 7-18, 21, 22, 24-27, 29, 30, 34-36, 42, 44, 45, 47, 48, 51, 54, 56-58