题目链接:点击打开链接
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define LL long long
using namespace std;
struct node{
int a,v;
}num[100010];
bool cmp(node a,node b)
{
return a.v>b.v;
}
int main()
{
int n,i,j;
int visit[100010];
while(~scanf("%d",&n))
{
memset(visit,0,sizeof(visit));
for(i=0;i<n;i++)
scanf("%d",&num[i].a);
for(i=0;i<n;i++)
scanf("%d",&num[i].v);
sort(num,num+n,cmp);
LL sum=0;
for(i=0;i<n;i++)
{
for(j=num[i].a;j>0;j--)
if(!visit[j])
break;
if(j!=0)
{
sum+=num[i].v;
visit[j]=1;
}
}
printf("%lld\n",sum);
}
return 0;
}