Cod sursa(job #2913585)

Utilizator Luka77Anastase Luca George Luka77 Data 15 iulie 2022 12:07:44
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

const int NMAX = 500005;
int arr[NMAX], rez[NMAX];
int n;

void mergesort(int st, int dr)
{
    if(st >= dr)
        return;
    else
    {
        int mid = (st+dr)/2;
        mergesort(st, mid);
        mergesort(mid+1, dr);
        int ind1=st,ind2=mid+1,ind=0;
        while(ind1 <= mid && ind2 <= dr)
            if(arr[ind1] <= arr[ind2])
                rez[++ind] = arr[ind1++];
            else
                rez[++ind] = arr[ind2++];
        while(ind1 <= mid)
            rez[++ind] = arr[ind1++];
        while(ind2 <= dr)
            rez[++ind] = arr[ind2++];
        for(int i=st;i<=dr;++i)
            arr[i] = rez[i-st+1];
    }
}

int main()
{
    f >> n;
    for(int i=1;i<=n;++i)
        f >> arr[i];
    mergesort(1, n);
    for(int i=1;i<=n;++i)
        g << arr[i] << ' ';
}