Pagini recente » Cod sursa (job #866469) | Cod sursa (job #199979) | Cod sursa (job #219056) | luni_ora_10 | Cod sursa (job #1506598)
#include <cstdio>
using namespace std;
int a[500005], b[500005];
void solve(int l, int r) {
int m = (l + r) / 2,i,j,k;
if(l == r) return ;
solve(l, m);
solve(m + 1, r);
for(i = l, j = m + 1, k = l; i <= m || j <= r;)
if(j > r || (i <= m && a[i] < a[j]))
b[k++] = a[i++];
else
b[k++] = a[j++];
for(k = l; k <= r; ++k)
a[k] = b[k];
}
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int n;
scanf("%d", &n);
for(int i = 1; i <= n; ++ i) {
scanf("%d", &a[i]);
}
solve(1, n);
for(int i = 1; i <= n; ++ i) {
printf("%d ", a[i]);
}
return 0;
}