Pagini recente » Cod sursa (job #974187) | Cod sursa (job #2725866) | Cod sursa (job #564502) | Cod sursa (job #3164034) | Cod sursa (job #1019614)
#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 j,i=1,k=1,m=(s+d)/2;
merge(s,m);
merge(m+1,d);
for(j=1;j<=m;j++) b[j]=a[j];
for(j=m+1; i<=m && j<=n ;)
a[k++]=(a[j]<b[i])? a[j++] : b[i++];
while(i<=m) a[k++]=b[i++];
}
}
int main()
{
freopen("mergesort.in","rt",stdin);
freopen("mergesort.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;
}