Pagini recente » Cod sursa (job #1432850) | Cod sursa (job #1347154) | Cod sursa (job #304109) | Cod sursa (job #98272) | Cod sursa (job #240303)
Cod sursa(job #240303)
#include <cstdio>
#define MAX_N 500005
int V[MAX_N];
int N;
inline void swap(int &a, int &b)
{
a ^= b;
b ^= a;
a ^= b;
}
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, j;
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();
}