#include<iostream>
#include<cstdlib>
using namespace std;
int *pom;
void scal(int tab[], int lewy, int srodek, int prawy)
{
int i, j;
for(i = srodek + 1; i>lewy; i--)
pom[i-1] = tab[i-1];
for(j = srodek; j<prawy; j++)
pom[prawy+srodek-j] = tab[j+1];
for(int k=lewy;k<=prawy;k++)
if(pom[j]<pom[i])
tab[k] = pom[j--];
else
tab[k] = pom[i++];
}
void sortowanie_przez_scalanie(int tab[],int lewy, int prawy)
{
//gdy mamy jeden element, to jest on już posortowany
if(prawy<=lewy) return;
//znajdujemy srodek podtablicy
int srodek = (prawy+lewy)/2;
//dzielimy tablice na częsć lewą i prawa
sortowanie_przez_scalanie(tab, lewy, srodek);
sortowanie_przez_scalanie(tab, srodek+1, prawy);
//scalamy dwie już posortowane tablice
scal(tab, lewy, srodek, prawy);
}
int main()
{
int *tab,
n; //liczba elementów tablicy
cin>>n;
tab = new int[n]; //przydzielenie pamięci na tablicę liczb
pom = new int[n]; //przydzielenie pamięci na tablicę pomocniczą
//wczytanie elementów tablicy
for(int i=0;i<n;i++)
cin>>tab[i];
//sortowanie wczytanej tablicy
sortowanie_przez_scalanie(tab,0,n-1);
//wypisanie wyników
for(int i=0;i<n;i++)
cout<<tab[i]<<" ";
system("pause");
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdGRsaWI+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKaW50ICpwb207IAogCiAKdm9pZCBzY2FsKGludCB0YWJbXSwgaW50IGxld3ksIGludCBzcm9kZWssIGludCBwcmF3eSkgCnsKICBpbnQgaSwgajsKIAogCiAgZm9yKGkgPSBzcm9kZWsgKyAxOyBpPmxld3k7IGktLSkgCiAgICBwb21baS0xXSA9IHRhYltpLTFdOyAKIAogCiAgZm9yKGogPSBzcm9kZWs7IGo8cHJhd3k7IGorKykgCiAgICBwb21bcHJhd3krc3JvZGVrLWpdID0gdGFiW2orMV07IAogCiAKICBmb3IoaW50IGs9bGV3eTtrPD1wcmF3eTtrKyspIAogICAgaWYocG9tW2pdPHBvbVtpXSkKICAgICAgdGFiW2tdID0gcG9tW2otLV07CiAgICBlbHNlCiAgICAgIHRhYltrXSA9IHBvbVtpKytdOwp9CiAKIAogCnZvaWQgc29ydG93YW5pZV9wcnplel9zY2FsYW5pZShpbnQgdGFiW10saW50IGxld3ksIGludCBwcmF3eSkKewogIC8vZ2R5IG1hbXkgamVkZW4gZWxlbWVudCwgdG8gamVzdCBvbiBqdcW8IHBvc29ydG93YW55CiAgaWYocHJhd3k8PWxld3kpIHJldHVybjsgCiAKICAvL3puYWpkdWplbXkgc3JvZGVrIHBvZHRhYmxpY3kKICBpbnQgc3JvZGVrID0gKHByYXd5K2xld3kpLzI7CiAKICAvL2R6aWVsaW15IHRhYmxpY2UgbmEgY3rEmXPEhyBsZXfEhSBpIHByYXdhCiAgc29ydG93YW5pZV9wcnplel9zY2FsYW5pZSh0YWIsIGxld3ksIHNyb2Rlayk7IAogIHNvcnRvd2FuaWVfcHJ6ZXpfc2NhbGFuaWUodGFiLCBzcm9kZWsrMSwgcHJhd3kpOwogCiAgLy9zY2FsYW15IGR3aWUganXFvCBwb3NvcnRvd2FuZSB0YWJsaWNlCiAgc2NhbCh0YWIsIGxld3ksIHNyb2RlaywgcHJhd3kpOwp9CiAKIAogCmludCBtYWluKCkKewogIGludCAqdGFiLAogIG47IC8vbGljemJhIGVsZW1lbnTDs3cgdGFibGljeQogCiAgY2luPj5uOwogIHRhYiA9IG5ldyBpbnRbbl07IC8vcHJ6eWR6aWVsZW5pZSBwYW1pxJljaSBuYSB0YWJsaWPEmSBsaWN6YgogIHBvbSA9IG5ldyBpbnRbbl07IC8vcHJ6eWR6aWVsZW5pZSBwYW1pxJljaSBuYSB0YWJsaWPEmSBwb21vY25pY3rEhQogCiAgLy93Y3p5dGFuaWUgZWxlbWVudMOzdyB0YWJsaWN5CiAgZm9yKGludCBpPTA7aTxuO2krKykKICAgIGNpbj4+dGFiW2ldOwogCiAgLy9zb3J0b3dhbmllIHdjenl0YW5laiB0YWJsaWN5CiAgc29ydG93YW5pZV9wcnplel9zY2FsYW5pZSh0YWIsMCxuLTEpOwogCiAgLy93eXBpc2FuaWUgd3luaWvDs3cKICBmb3IoaW50IGk9MDtpPG47aSsrKQogICAgY291dDw8dGFiW2ldPDwiICI7CiAKICBzeXN0ZW0oInBhdXNlIik7CiAgcmV0dXJuIDA7Cn0=