#include<bits/stdc++.h>

using namespace std;

typedef long long LL;
const int MAXN=800000+100;
LL dp[MAXN],h[MAXN],a[MAXN],bit[MAXN],d[MAXN],ans;
LL n;

LL lowbit(LL x){
	return x&-x;
}

LL query(LL x){
	LL ret=0;
	for(int j=x;j>0;j-=lowbit(j)){
		ret=max(ret,bit[j]);
	}
	return ret;
}

void change(LL i,LL x){
	for(int j=i;j<=n;j+=lowbit(j)){
		bit[j]=max(bit[j],x);
	}
}

int main(){
	cin>>n;
	for(LL i=1;i<=n;i++){
		cin>>h[i];
	}
	for(LL i=1;i<=n;i++){
		cin>>a[i];
	}
	for(LL i=1;i<=n;i++){
		LL tmp=query(h[i]-1);
		dp[i]=tmp+a[i];
		change(h[i],dp[i]);
		ans=max(ans,dp[i]);
	}
	cout<<ans<<endl;
	return 0;
}
/*
5
1 2 3 4 5
1000000000 1000000000 1000000000 1000000000 1000000000
*/