Cod sursa(job #956454)

Utilizator CaligulaGAIVS IVLIVS CAESAR AVGVSTVS GERMANICVS Caligula Data 3 iunie 2013 10:39:10
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<cstdio>
using namespace std;
int n,a[500005],v[500005];
void merge(int st, int mij, int dr)
{
    int i,j,nr=st-1;
    for (i=st,j=mij+1;i<=mij && j<=dr;)
        {
            if (a[i]<a[j]) v[++nr]=a[i++];
            else v[++nr]=a[j++];
        }
    while (i<=mij) v[++nr]=a[i++];
    while (j<=dr) v[++nr]=a[j++];
    for (i=st;i<=dr;++i)
        a[i]=v[i];
}
void msort(int st, int dr)
{
    int mij=(st+dr)/2;
    if (st<dr)
        {
            msort(st,mij);
            msort(mij+1,dr);
            merge(st,mij,dr);
        }
}
int main()
{
    int i;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;++i)
        scanf("%d",&a[i]);
    msort(1,n);
    for (i=1;i<=n;++i)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}