Pagini recente » Cod sursa (job #506208) | Cod sursa (job #2643210) | Cod sursa (job #645243) | Borderou de evaluare (job #2912136) | Cod sursa (job #1393593)
#include <cstdio>
using namespace std;
int i,j,m,n,x,y,a[500001],b[500001],k;
void interc(int st,int mij, int dr)
{
int i,j,k;
for(i=st; i<=dr; i++)
b[i]=a[i];
i=st; j=mij+1; k=st-1;
while(i<=mij && j<=dr)
{
if(b[i]<b[j])
{
a[++k]=b[i];
i++;
}
else
{
a[++k]=b[j];
j++;
}
for(int l=i; l<=mij; l++)
a[++k]=b[l];
for(int l=j; l<=dr; l++)
a[++k]=b[l];
}
}
void sortt(int st, int dr)
{
int m=(st+dr)/2;
if(st!=dr) {
sortt(st,m);
sortt(m+1,dr);
interc(st,m,dr);}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=1; i<=n; i++)
scanf("%d",&a[i]);
sortt(1,n);
for(i=1; i<=n; i++)
printf("%d ",a[i]);
return 0;
}