#include <iostream>
#include <queue>
#include <algorithm>
#include <map>
using namespace std;
struct Node{
int id;
int shu;
bool operator<(const Node& t)const{
if(t.id==id){
return shu>t.shu;
}
return id<t.id;
}
}a[100005],b[100005];
int xx[100005],yy[100005],zz[100005],ans=0;
map<int,int> mp;
int main(){
int t,n,oo=0;
cin>>t>>n;
for(int i=1; i<=n; i++){
cin>>a[i].id;
}
for(int i=1; i<=n; i++){
cin>>a[i].shu;
oo+=a[i].shu;
}
sort(a+1,a+1+n);
for(int i=1; i<=n; i++){
if(mp[a[i].id]==0){
mp[a[i].id]=1;
ans+=a[i].shu;
xx[a[i].id]=a[i].shu;
}else{
int h=a[i].id;
int u=h,num=2e9,sum;
int k=0;
while(--h){
if(mp[h]==0){
xx[h]=a[i].shu;
mp[h]=1;
ans+=a[i].shu;
k=1;
break;
}
}
if(k==1){
continue;
}
while(--u){
if(a[u].shu<num){
num=a[u].shu;
sum=a[u].id;
}
}
if(num<a[i].shu){
ans-=num;
ans+=a[i].shu;
xx[sum]=a[i].shu;
}
}
}
cout<<t-(oo-ans)<<endl;
return 0;
}