#include <bits/stdc++.h>
using namespace std ;
const long long inf = 1e18 ;
const int MAX = 1e6 + 10 ;
int a[MAX] , cost[MAX] , b[MAX] ;
int pos[MAX] ;
int n , m ;
long long dp[MAX] ;
int main()
{
ios_base::sync_with_stdio(0) ;
cin.tie(0) ;
cin>>n>>m ;
for(int i = 1 ; i <= n ; ++i)
cin>>a[i] ;
for(int i = 1 ; i <= n ; ++i)
cin>>cost[i] ;
for(int i = 1 ; i <= m ; ++i)
{
cin>>b[i] ;
pos[b[i]] = i ;
}
for(int i = 1 ; i <= m ; ++i)
dp[i] = -inf ;
long long ans = 0 ;
dp[0] = 0 ;
for(int i = 1 ; i <= n ; ++i)
{
cost[i] = min(0 , cost[i]) ;
ans += cost[i] ;
if(!pos[a[i]])
continue ;
dp[pos[a[i]]] = max(dp[pos[a[i]]] , dp[pos[a[i]]-1] + cost[i]) ;
}
return cout<<ans - dp[m]<<"\n" , 0 ;
}
Copy