Pagini recente » Cod sursa (job #396937) | Cod sursa (job #1741640) | Monitorul de evaluare | Cod sursa (job #698032) | Cod sursa (job #1752181)
#include <iostream>
#include <fstream>
#define nr 500002
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
long n, A[nr], B[nr];
void merge_sort(int l, int r) {
int m = (l + r) >> 1, i, j, k;
if( l == r ) return;
merge_sort( l, m );
merge_sort( m + 1, r );
for( i = l, j = m+1, k = l; i <= m || j <= r; )
if( j > r || (i <= m && A[i] < A[j]) )
B[ k++ ] = A[ i++ ];
else
B[ k++ ] = A[ j++ ];
for( k = l; k <= r; k++ )
A[k] = B[k];
}
int main()
{
fin>>n;
for(long i=1; i<=n; i++){
fin>>A[i];
}
merge_sort( 1, n );
for(long i=1; i<=n; i++){
fout<<A[i]<<" ";
}
return 0;
}