为防止广告,目前nocow只有登录用户能够创建新页面。如要创建页面请先登录/注册(新用户需要等待1个小时才能正常使用该功能)。

二叉堆/C

来自NOCOW
跳转到: 导航, 搜索
//Buffalo_NGJ
struct heap{
     int a[32768],n;
     int pre(int p){return p-1>>1;};
     int left(int p){return (p<<1)+1;};
     int right(int p){return (p<<1)+2;};
     void ins(int x){
          int p;n++;
          for(p=n-1;p>0;){
              if(x<a[pre(p)])
                  a[p]=a[pre(p)],p=pre(p);
              else break;
              }
          a[p]=x;
          }
     int pop(){
         int p,x=a[0],tmp;
         for(p=0,n--;left(p)<n;){
             tmp=(right(p)<n&&a[right(p)]<a[left(p)])?right(p):left(p);
             if(a[tmp]<a[n])a[p]=a[tmp],p=tmp;
             else break;
             }
         a[p]=a[n];
         return x;
         }
     };
个人工具