Pagini recente » Cod sursa (job #1440904) | Cod sursa (job #2319236) | Cod sursa (job #1407219) | Cod sursa (job #2521686) | Cod sursa (job #3242122)
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define F first
#define S second
#define endl '\n'
#define all(a) (a).begin(),(a).end()
using namespace std;
const int maxn = 1e5 + 5;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void merge(vector<int>& a, int l, int mid, int r) {
vector<int> left, right;
int n = mid - l + 1;
int m = r - mid;
for (int i = 0; i < n; i++) {
left.pb(a[l + i]);
}
for (int i = 0; i < m; i++) {
right.pb(a[mid + i + 1]);
}
int j = 0, i = 0;
n = left.size();
m = right.size();
int k = l;
while (j < m && i < n) {
if (left[i] <= right[j]) {
a[k] = left[i];
i++;
}
else {
a[k] = right[j];
j++;
}
k++;
}
while (i < n) {
a[k] = left[i];
k++;
i++;
}
while (j < m) {
a[k] = right[j];
j++;
k++;
}
}
void merge_sort(vector<int>& a, int l, int r) {
if (l >= r) {
return;
}
int mid = l + (r - l) / 2;
merge_sort(a, l, mid);
merge_sort(a, mid + 1, r);
merge(a, l, mid, r);
}
void solve() {
int n;
fin >> n;
vector<int> a(n);
for (int i = 0; i < n; i++) {
fin >> a[i];
}
merge_sort(a, 0, n - 1);
for (int i = 0; i < n; i++) {
fout << a[i] << " ";
}
fout << endl;
}
int main() {
int t = 1;
// cin >> t;
while (t--) {
solve();
}
return 0;
}