提交记录 4862
| 提交时间 |
评测时间 |
| 2018-08-03 11:50:34 |
2020-07-31 23:18:36 |
void swap(unsigned &x,unsigned &y)
{
int t=x;
x=y,y=t;
}
struct Heap //小根堆
{
unsigned int a[10005];
int tot;
#define LE(x) ((x)<<1)
#define RT(x) (((x)<<1)+1)
#define DAD(x) ((x)>>1)
Heap() {tot=0;}
void modify(int x)
{
int mi;
if(LE(x)>tot || x>tot) return;
if(RT(x)>tot) mi=LE(x);
else if(a[LE(x)]<a[RT(x)]) mi=LE(x);
else mi=RT(x);
if(a[x]>a[mi]) swap(a[x],a[mi]);
}
void ins(int x)
{
tot++;
a[tot]=x;
for(x=DAD(tot);x;x=DAD(x))
modify(x);
}
int top()
{
return a[1];
}
void repair()
{
int mi,x;
for(x=1;x<=tot;x=mi)
{
if(LE(x)>tot) break;
if(RT(x)>tot) mi=LE(x);
else if(a[LE(x)]<a[RT(x)]) mi=LE(x);
else mi=RT(x);
if(a[x]>a[mi]) swap(a[x],a[mi]);
else break;
}
}
void pop()
{
swap(a[1],a[tot]);
tot--;
repair();
}
};
Heap s;
void sort(unsigned *a, int n) {
int i;
for(i=0;i<n;i++)
s.ins(a[i]);
for(i=0;i<n;i++)
a[i]=s.top(),s.pop();
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 1.112 ms | 88 KB | Accepted | Score: 100 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-04-12 20:58:00 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠