Cod sursa(job #3261300)

Utilizator Stefanstef99Stefan Puica Stefanstef99 Data 5 decembrie 2024 12:47:02
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;

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

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

void Intercl(int st, int m, int dr)
{
    int i, j, k;
    i=st;
    j=m+1;
    k=st;
    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 (st < dr)
    {
        int m = (st + dr) / 2;
        MergeSort(st, m);
        MergeSort(m + 1, dr);
        Intercl(st, m, dr);
    }
}

void Citire()
{
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> a[i];
}

void Afisare()
{
    for (int i = 1; i <= n; i++)
        fout << a[i] << " ";
}

int main()
{
    Citire();
    MergeSort(1, n);
    Afisare();
    return 0;
}