parent
45776364a9
commit
b2d713b278
@ -0,0 +1,29 @@
|
|||||||
|
#include<stdio.h>
|
||||||
|
int n,num[1000010];
|
||||||
|
void down(int x)
|
||||||
|
{
|
||||||
|
int y=x;
|
||||||
|
if(x*2<=n&&num[x*2]<num[y]) y=x*2;
|
||||||
|
if(x*2+1<=n&&num[x*2+1]<num[y]) y=x*2+1;
|
||||||
|
if(y!=x)
|
||||||
|
{
|
||||||
|
int a=num[x];
|
||||||
|
num[x]=num[y];
|
||||||
|
num[y]=a;
|
||||||
|
down(y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
scanf("%d",&n);
|
||||||
|
for(int i=1;i<=n;i++)
|
||||||
|
scanf("%d",&num[i]);
|
||||||
|
for(int i=n/2;i;i--) down(i);
|
||||||
|
while(n)
|
||||||
|
{
|
||||||
|
printf("%d ",num[1]);
|
||||||
|
num[1]=num[n--];
|
||||||
|
down(1);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in new issue