用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

heap(easy)

2018-09-23 作者:BeyondLimits举报

[c++]代码库

#include <cstdio>
#include <cctype>
#include <iostream>
using namespace std;
int n,num,ins,x,heapp[1000001];
inline int read()
{
    int x=0;
    bool w=false;
    char ch=0;
    while(!isdigit(ch))
    {
        w|=ch=='-';
        ch=getchar();
    }
    while(isdigit(ch))
    {
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return w?-x:x;
}
inline void delete_it()
{
    heapp[1]=heapp[num];
    int now=1;
    num--;
    while((now<<1)<=num)
    {
        int nexxt=now<<1;
        if(nexxt+1<=num&&heapp[nexxt+1]<heapp[nexxt]) nexxt++;
        if(heapp[nexxt]<heapp[now]) swap(heapp[nexxt],heapp[now]);
        else break;
        now=nexxt;
    }
}
inline void sift_up(int x)
{
    int p=x;
    while(p)
    {
        int fa=p>>1;
        if(heapp[fa]>heapp[p]) swap(heapp[fa],heapp[p]);
        else break;
        p=fa;
    }
}
inline void build(int x)
{
    heapp[++num]=x;
    sift_up(num);
}
int main()
{
    ios::sync_with_stdio(false);
    n=read();
    for(register int i=1;i<=n;i++)
    {
        ins=read();
        if(ins==1)
        {
            x=read();
            build(x);
        }
        else if(ins==2) cout<<heapp[1]<<endl;
        else delete_it();
    }
    return 0;
}


分享到:
更多

网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。