Pagini recente » Cod sursa (job #2262062) | Cod sursa (job #1466553) | Cod sursa (job #1789420) | Cod sursa (job #3234123) | Cod sursa (job #240310)
Cod sursa(job #240310)
#include <cstdio>
#define MAX_N 500005
int V[MAX_N];
int N;
inline void swap(int &a, int &b)
{
int aux = a;
a = b;
b = aux;
}
void citire()
{
scanf("%d",&N);
for(int i = 1; i <= N; ++i)
{
scanf("%d ",V+i);
int j = i;
while(j/2 && V[j] > V[j/2])
swap(V[j], V[j/2]);
}
}
void solve()
{
int Nh = N;
for(int k = 1; k <= N; ++k)
{
swap(V[1], V[Nh]);
--Nh;
int i;
i = 1;
while(1)
{
int j = 2*i;
if(j > Nh) break;
if(j < Nh && V[j+1] > V[j]) ++j;
if(V[j] <= V[i]) break;
swap(V[i], V[j]);
i = j;
}
}
for(int i = 1; i <= N; ++i)
printf("%d ", V[i]);
}
int main()
{
freopen("algsort.in","rt",stdin);
freopen("algsort.out","wt",stdout);
citire();
solve();
}