题解 | #【模板】堆#

【模板】堆

https://www.nowcoder.com/practice/13f61c8c92404f5ea5d6fa4c692869fb

const int maxn=1e5+100;
int a[maxn],h[maxn],mysize;
void down(int u)
{
    int t=u;
    if(u*2<=mysize && a[u*2]<a[t]) t=2*u;
    if(2*u+1<=mysize && a[2*u+1]<a[t]) t=2*u+1;
    if(u!=t)
    {
        swap(a[u],a[t]);
        down(t);
    }

}
int main()
{
    int n,m,i,j;
    cin>>n>>m;
    mysize=n;
    for(i=1;i<=n;i++){
        cin>>a[i];
    }
    for(i=n/2;i;i--){
        down(i);
    }
    while(m--)
    {
        cout<<a[1]<<" ";
        a[1]=a[mysize--];
        down(1);
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-15 17:24
点赞 评论 收藏
分享
仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务