Pagini recente » Cod sursa (job #1062023) | Cod sursa (job #1100099) | Cod sursa (job #712425) | Cod sursa (job #2451257) | Cod sursa (job #1202076)
#include <cstdio>
#define Nmax 500005
using namespace std;
int N,a[Nmax],aux[Nmax];
inline void Merge(int st, int mij, int dr)
{
int i=st,j=mij+1;
aux[0]=0;
while(i<=mij && j<=dr)
{
if(a[i]<=a[j])
aux[++aux[0]]=a[i++];
else
aux[++aux[0]]=a[j++];
}
for(;i<=mij;++i)
aux[++aux[0]]=a[i];
for(;j<=dr;++j)
aux[++aux[0]]=a[j];
for(i=st;i<=dr;++i)
a[i]=aux[i-st+1];
}
inline void MergeSort(int st, int dr)
{
if(st==dr)
return;
int mij=(st+dr)/2;
MergeSort(st,mij); MergeSort(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]);
MergeSort(1,N);
for(i=1;i<=N;++i)
printf("%d ", a[i]);
printf("\n");
return 0;
}