Pagini recente » Cod sursa (job #1852189) | Cod sursa (job #2850138) | Cod sursa (job #1130229) | Cod sursa (job #2968550) | Cod sursa (job #1362183)
#include<cstdio>
#include<string>
using namespace std;
#ifdef HOME
const string inputFile = "input.txt";
const string outputFile = "output.txt";
#else
const string problemName = "algsort";
const string inputFile = problemName + ".in";
const string outputFile = problemName + ".out";
#endif
const int NMAX = 500000 + 5;
int N;
int V[NMAX];
int aux[NMAX];
void mergesort(int V[], int lo, int hi) {
if(lo >= hi)
return;
int mi = (lo + hi) / 2;
mergesort(V, lo, mi + 0);
mergesort(V, mi + 1, hi);
int i, j, k;
for(i = k = lo, j = mi + 1; i <= mi || j <= hi; )
if(V[i] <= V[j] || j > hi)
aux[k++] = V[i++];
else
aux[k++] = V[j++];
for(i = lo; i <= hi; i++)
V[i] = aux[i];
}
int main() {
int i;
freopen(inputFile.c_str(), "r", stdin);
freopen(outputFile.c_str(), "w", stdout);
scanf("%d", &N);
for(i = 1; i <= N; i++)
scanf("%d", &V[i]);
mergesort(V, 1, N);
for(i = 1; i <= N; i++)
printf("%d ", V[i]);
return 0;
}