总结
重庆市赛的原题,当时自己亲手写的,这次自己写了一堆BUG,恼火的很,这次自己调试一个小时没调试出来了,太痛苦了
问题
经过但未使用升级之后,再取最大的,自己取了只取了经过但未使用,忽略了升级成x,还有很多x等级的消耗时间更大
bool cmp(pair<int,int> a,pair<int,int> b)
{
if(a.F==b.F)
return a.S>b.S;
return a.F<b.F;
}
signed main()
{
IOS;
//file();
int n;
cin>>n;
vector<pair<int,int> >vec(n);
priority_queue<int>pri;
for(auto &it:vec)
cin>>it.F;
for(auto &it:vec)
cin>>it.S;
sort(all(vec),cmp);
int index=0,ans=0,sum=0;
for(int i=0;i<n;i++)
{
int cnt=vec[i].F-index;
if(cnt>0)
{
for(int j=0;j<cnt&&(!pri.empty());j++)
sum-=pri.top(),pri.pop(),ans+=sum;
index=vec[i].F;
}
pri.push(vec[i].S),sum+=vec[i].S;
}
while(!pri.empty())
sum-=pri.top(),pri.pop(),ans+=sum;
cout<<ans<<endl;
return 0;
}