请这么写del()
void del(int x)
{
x=a[x];
sum[cnt[x]]-=x;
cnt[x]--;
sum[cnt[x]]+=x;
if(cnt[x]==sz)
st.erase(x);
}
而不是这样
void del(int x)
{
x=a[x];
sum[cnt[x]]-=x;
cnt[x]--;
if(cnt[x]==sz)
st.erase(x);
else
sum[cnt[x]]+=x;
}
因偷懒而直接copy add()导致调了半小时,警钟敲烂(而且add也可以按照第一种方法写)