Cod sursa(job #1493140)

Utilizator Burbon13Burbon13 Burbon13 Data 28 septembrie 2015 19:24:33
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>
#define nmx 500002
using namespace std;

int n, v[nmx], a[nmx];

void read(){
    scanf("%d", &n);
    for(int i = 1; i <= n; ++i)
        scanf("%d", &v[i]);
}

void merge_sort(int st, int dr){
    if(st >= dr)
        return;
    int mij = st + (dr - st) / 2;
    merge_sort(st,mij);
    merge_sort(mij+1,dr);

    int i = st, j = mij + 1;
    for(int k = st; k <= dr; ++k)
        if(j > dr || (i <= mij && v[i] <= v[j]))
            a[k] = v[i++];
        else
            a[k] = v[j++];
    for(int k = st; k <= dr; ++k)
        v[k] = a[k];
}

void write(){
    for(int i = 1; i <= n; ++i)
        printf("%d ", v[i]);
}

int main(){
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    read();
    merge_sort(1,n);
    write();
    return 0;
}