Cod sursa(job #1043901)

Utilizator vlad008Stan Vladut Angel vlad008 Data 29 noiembrie 2013 00:08:55
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<cstdio>
#define Nmax 500005
using namespace std;
int a[Nmax],b[Nmax];
int n;
void merge(int s, int d)
{if(s<d)
    {int m=(s+d)/2,i=s,j=m+1,k=s;
     merge(s,m);
     merge(m+1,d);
     for(;i<=m && j<=d;k++)
        b[k]=(a[i]>a[j])? a[j++]: a[i++]; 
     for(;i<=m;i++,k++) b[k]=a[i];
     for(;j<=d;j++,k++) b[k]=a[j];
     for(i=s;i<=d;i++) a[i]=b[i];
    }
}
int main()
{
    freopen("algsort.in","rt",stdin);
    freopen("algsort.out","wt",stdout);
    scanf("%d",&n);
    for(register int i=1;i<=n;i++) scanf("%d",&a[i]);
    merge(1,n);
    for(register int i=1;i<=n;i++) printf("%d ",a[i]);
    printf("\n");
    return 0;
}