Pagini recente » Cod sursa (job #783467) | Cod sursa (job #1789853) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #1623974)
#include <cstdio>
using namespace std;
int v[500005];
int c[500005];
void merge_sort( int st, int dr ){
if( st >= dr ) return ;
int i, j, k, mid;
mid = ( st + dr ) / 2;
merge_sort( st, mid );
merge_sort( mid + 1, dr );
k = st;
i = st;
j = mid + 1;
while( ( i <= mid ) || ( j <= dr ) ){
if( ( v[i] <= v[j] && i <= mid ) || ( j > dr ) ){
c[k] = v[i];
i++;
}
else{
c[k] = v[j];
j++;
}
k++;
}
for( i = st; i < k; ++i )
v[i] = c[i];
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int n, i, j;
scanf("%d",&n);
for( i = 1; i <= n; ++i ){
scanf("%d",&v[i]);
}
merge_sort( 1, n );
for( i = 1; i <= n; ++i )
printf("%d ",v[i]);
return 0;
}