Pagini recente » Cod sursa (job #1397528) | Cod sursa (job #1666553) | Cod sursa (job #827002) | Cod sursa (job #685613) | Cod sursa (job #1141832)
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int v[500010],n,i,j,p,c,aux,x,t;
void update (int x) {
v[++t]=x;
c=t;
p=t/2;
while (p!=0 && v[p]<v[c]) {
aux=v[c];
v[c]=v[p];
v[p]=aux;
c=p;
p/=2;
}
}
void corect () {
p=1;c=2;
while (c<i) {
if (c+1<i && v[c+1]>v[c])
c++;
if (v[p]<v[c]) {
aux=v[p];
v[p]=v[c];
v[c]=aux;
}
p=c;
c*=2;
}
}
int main () {
fin>>n;
for (i=1;i<=n;i++) {
fin>>x;
update(x);
}
for (i=n;i>=2;i--) {
aux=v[1];
v[1]=v[i];
v[i]=aux;
corect();
}
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}