Cod sursa(job #3037758)

Utilizator divadddDavid Curca divaddd Data 26 martie 2023 13:20:04
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 5e5+2;
int n,a[NMAX];

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

void interclas(int st, int mid, int dr){
    int i = st, j = mid+1;
    int c[NMAX], k = 0;
    while(i <= mid && j <= dr){
        if(a[i] < a[j]){
            c[++k] = a[i++];
        }else{
            c[++k] = a[j++];
        }
    }
    for(; i <= mid; i++){
        c[++k] = a[i];
    }
    for(; j <= dr; j++){
        c[++k] = a[j];
    }
    for(int i = st; i <= dr; i++){
        a[i] = c[i-st+1];
    }
}

void msort(int st, int dr){
    if(st < dr){
        int mid = ((st+dr)>>1);
        msort(st, mid);
        msort(mid+1, dr);
        interclas(st, mid, dr);
    }
}

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