#include #include using namespace std; typedef long long llong; int A[5111]; int B[5111]; int K[5111]; int n; llong F[5111]; llong MAX(llong a,llong b) { if (a>b) return a; else return b; } llong Sell(int fruit,int day) { if (day>=K[fruit]) return 0LL; else return (llong)A[fruit]+(llong)B[fruit]*(llong)day; } ///Not needed int bestfrom[5111]; int bestans=0; /// int main() { freopen("fruits.in","r",stdin); freopen("fruits.out","w",stdout); int i,j; llong win=0; llong ans=0; scanf("%d",&n); for (i=1;i<=n;i++) { scanf("%d",&A[i]); } for (i=1;i<=n;i++) { scanf("%d",&B[i]); } for (i=1;i<=n;i++) { scanf("%d",&K[i]); } for (i=1;i<=n;i++) { F[i]=0; if (K[i]==0) { bestfrom[i]=0; continue; } win=Sell(i,K[i]-1); for (j=i-1;j>=0;j--) { if (K[j]F[i]) bestfrom[i]=j; F[i]=MAX(F[i],F[j]+win); } win+=Sell(j,K[i]-1); } if (F[i]>ans) bestans=i; ans=MAX(ans, F[i]); } printf("%lld\n",ans); return 0; }