Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Istoria paginii runda/cgfhfjdkfyul | Istoria paginii runda/no-time-to-rest/clasament | Cod sursa (job #3208994)
#include <iostream>
int n, v[500001], aux[500001];
void mergeSort(int v[], int st, int dr)
{
if (st < dr)
{
int mij = st + (dr - st) / 2;
mergeSort(v, st, mij);
mergeSort(v, mij + 1, dr);
int ind = 0, i = st, j = mij + 1;
while (i <= mij && j <= dr)
{
if (v[i] < v[j])
aux[++ind] = v[i++];
else
aux[++ind] = v[j++];
}
while (i <= mij)
aux[++ind] = v[i++];
while (j <= dr)
aux[++ind] = v[j++];
for (int i = st, j = 1; i <= dr; ++i, ++j)
v[i] = aux[j];
}
}
int main()
{
std::cin >> n;
for (int i = 1; i <= n; ++i)
std::cin >> v[i];
mergeSort(v, 1, n);
for (int i = 1; i <= n; ++i)
std::cout << v[i] << ' ';
return 0;
}