#include<bits/stdc++.h>
using namespace std;
const int N = 2e5+5;
long long dp[N];
long long fw[N];
long long a[N];
long long h[N];
int n;
void update(int now,long long num){
    for(int i=now;i<=n;i+=(i&-i))    fw[i] = max(fw[i],num);
}
long long query(int now){
    long long ma = 0;
    for(int i=now;i>0;i-=(i&-i))    ma = max(ma,fw[i]);
    return ma;
}
int main(){
    scanf("%d",&n);
    for(int i=0;i<n;i++)    scanf("%lld",&h[i]);
    for(int i=0;i<n;i++)    scanf("%lld",&a[i]);
    long long ans = 0;
    for(int i=0;i<n;i++){
        dp[i] = query(h[i] - 1) + a[i];
        update(h[i],dp[i]);
        ans = max(ans,dp[i]);
    }
    printf("%lld\n",ans);
    return 0;
}
