Cod sursa(job #1779446)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 15 octombrie 2016 12:37:43
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
using namespace std;
const int NMAX = 500000;
int v[NMAX + 5], aux[NMAX + 5];
void merge(int st, int dr){
    if (st == dr)
        return ;
    int med = (st + dr) / 2;
    merge(st, med);
    merge(med + 1, dr);
    int k = 0, i = st, j = med + 1;
    while (i <= med && j <= dr){
        if (v[j] < v[i])
            aux[++k] = v[j++];
        else
            aux[++k] = v[i++];
    }
    while (i <= med)
        aux[++k] = v[i++];
    while (j <= dr)
        aux[++k] = v[j++];
    for (i = st; i <= dr; i ++)
        v[i] = aux[i - st + 1];
}
int main(){
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    int n, i;
    scanf("%d", &n);
    for (i = 1; i <= n; i ++)
        scanf("%d", &v[i]);
    merge(1, n);
    for (i = 1; i <= n; i ++)
        printf("%d ", v[i]);
    return 0;
}