直接暴力找就行。
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<functional>
#include<algorithm>
#include<iostream>
using namespace std;
#define MAXN (100000+10)
#define INF (2139062143)
#define For(i,n) for(int i=1;i<=n;i++)
int n,l[MAXN],d[MAXN];
pair<int,int> a[MAXN],b[MAXN];
int main()
{
// freopen("CF557C.in","r",stdin);
cin>>n;
int tot=0;
For(i,n) scanf("%d",&l[i]);
For(i,n) scanf("%d",&d[i]),tot+=d[i];
a[0]=b[0]=make_pair(0,0);
a[n+1]=b[n+1]=make_pair(INF,INF);
For(i,n) a[i]=make_pair(d[i],l[i]);
For(i,n) b[i]=make_pair(l[i],d[i]);
sort(a+1,a+1+n);
sort(b+1,b+1+n);
int p=0,len=0,ans=0;
For(i,n)
{
p+=b[i].second;len++;
if (b[i].first!=b[i+1].first)
{
int j=n;
while (j&&len>1)
{
if (a[j].second<b[i].first) p+=a[j].first,len--;
j--;
}
ans=max(ans,p);
p=len=0;
}
}
cout<<tot-ans<<endl;
return 0;
}