Pagini recente » Cod sursa (job #25470) | Cod sursa (job #961413) | Cod sursa (job #2590888) | Cod sursa (job #2093497) | Cod sursa (job #2197548)
#include <fstream>
#define DEF 500010
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int n, A[DEF], B[DEF];
void divimp (int st, int dr, int A[], int B[]) {
if (st < dr) {
int mid = (st + dr) / 2;
divimp (mid + 1, dr, A, B);
divimp (st, mid, A, B);
int i = st, j = mid + 1, k = 0;
while (i <= mid and j <= dr) {
if (A[i] < A[j]) {
B[++ k] = A[i ++];
}
else {
B[++ k] = A[j ++];
}
}
while (i <= mid) {
B[++ k] = A[i ++];
}
while (j <= dr) {
B[++ k] = A[j ++];
}
for (int i = st, t = 1; i <= dr; ++ i, ++ t) {
A[i] = B[t];
}
}
}
int main () {
fin >> n;
for (int i = 1; i <= n; ++ i) {
fin >> A[i];
}
divimp (1, n, A, B);
for (int i = 1; i <= n; ++ i) {
fout << A[i] << " ";
}
return 0;
}