Pagini recente » Cod sursa (job #3172245) | Cod sursa (job #985996) | Cod sursa (job #2733111) | Cod sursa (job #3168506) | Cod sursa (job #2975455)
#include <cstdio>
#include <vector>
#include <memory>
#include <algorithm>
using namespace std;
class Solver{
private:
void mergeSort(const typename vector<int>::iterator& begin,
const typename vector<int>::iterator& end) {
if (distance(begin, end) == 1)
return;
int middleDist = distance(begin, end) / 2;
mergeSort(begin, begin + middleDist);
mergeSort(begin + middleDist, end);
inplace_merge(begin, begin + middleDist, end);
}
void mergeSort(vector<int> &v) {
if (v.empty())
return;
mergeSort(v.begin(), v.end());
}
public:
Solver() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
}
~Solver() {
fclose(stdin);
fclose(stdout);
}
void sortArray() {
int N;
scanf("%d", &N);
vector<int> v(N);
for (int i = 0; i < N; ++i)
scanf("%d", &v[i]);
mergeSort(v);
for (auto it: v)
printf("%d ", it);
printf("\n");
}
};
int main() {
unique_ptr<Solver> s = make_unique<Solver>();
s->sortArray();
return 0;
}