Pagini recente » Cod sursa (job #2159271) | Cod sursa (job #2178428) | Cod sursa (job #106977) | Cod sursa (job #2657268) | Cod sursa (job #1362191)
#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; k <= hi; )
if((V[i] <= V[j] && i <= mi) || j > hi)
aux[k++] = V[i++];
else if((V[i] >= V[j] && j <= hi) || i > mi)
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;
}