- #include<cstdio>
- #include<algorithm>
- #include<iostream>
- #include<set>
- #include<queue>
- using namespace std;
- #define time first
- #define val second
- pair<int,int> a[10000]={};
- priority_queue<pair<int,int>>u;//默认大根堆//
- int n;
- int main(){
- cin>>n;
- for(int i=1;i<=n;++i)
- cin>>a[i].time;
- for(int i=1;i<=n;++i)
- cin>>a[i].second;
- sort(a+1,a+n+1);
- int ans=0;
- for(int t=a[n].time,qi=n;t>=1;--t)//t从后往前枚举每一个时间//
- {
- while(a[qi].time==t){
- u.push(make_pair(a[qi].val,a[qi].time));//地鼠消失之前,扔到堆里//
- --qi;
- }
- if(!u.empty())
- {
- ans+=u.top().first;//每次取价值最高的//
- u.pop();
- }
- }
- cout<<ans<<endl;
- }
-