Cod sursa(job #861942)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 22 ianuarie 2013 00:35:21
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <cstdio>

using namespace std;

#define Nmax 500002

int A[Nmax], B[Nmax];

int n;

void MergeSort(int i, int j){

    int mijl = (i + j) / 2;
    int i2, j2, k;

    if(i == j)
        return ;

    MergeSort(i, mijl);
    MergeSort(mijl + 1, j);

    for(i2 = i, j2 = mijl+1, k = i; i2 <= mijl || j2 <= j; )
        if(j2 > j || (i2 <= mijl && A[i2] < A[j2]))
            B[k++] = A[i2++];
        else
            B[k++] = A[j2++];

    for(k = i; k <= j; k++)
        A[k] = B[k];
}

void citire(){

    freopen("algsort.in", "r", stdin);

    scanf("%d", &n);

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

void afis(){

    freopen("algsort.out", "w", stdout);

    for(int i = 1; i <= n; i++)
        printf("%d ", A[i]);
}


int main(){

    citire();
    MergeSort(1,n);
    afis();

    return 0;
}