#pragma GCC optimize("O3") #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #pragma GCC optimize("inline") #pragma GCC optimize("-fgcse") #pragma GCC optimize("-fgcse-lm") #pragma GCC optimize("-fipa-sra") #pragma GCC optimize("-ftree-pre") #pragma GCC optimize("-ftree-vrp") #pragma GCC optimize("-fpeephole2") #pragma GCC optimize("-ffast-math") #pragma GCC optimize("-fsched-spec") #pragma GCC optimize("unroll-loops") #pragma GCC optimize("-falign-jumps") #pragma GCC optimize("-falign-loops") #pragma GCC optimize("-falign-labels") #pragma GCC optimize("-fdevirtualize") #pragma GCC optimize("-fcaller-saves") #pragma GCC optimize("-fcrossjumping") #pragma GCC optimize("-fthread-jumps") #pragma GCC optimize("-funroll-loops") #pragma GCC optimize("-freorder-blocks") #pragma GCC optimize("-fschedule-insns") #pragma GCC optimize("inline-functions") #pragma GCC optimize("-ftree-tail-merge") #pragma GCC optimize("-fschedule-insns2") #pragma GCC optimize("-fstrict-aliasing") #pragma GCC optimize("-falign-functions") #pragma GCC optimize("-fcse-follow-jumps") #pragma GCC optimize("-fsched-interblock") #pragma GCC optimize("-fpartial-inlining") #pragma GCC optimize("no-stack-protector") #pragma GCC optimize("-freorder-functions") #pragma GCC optimize("-findirect-inlining") #pragma GCC optimize("-fhoist-adjacent-loads") #pragma GCC optimize("-frerun-cse-after-loop") #pragma GCC optimize("inline-small-functions") #pragma GCC optimize("-finline-small-functions") #pragma GCC optimize("-ftree-switch-conversion") #pragma GCC optimize("-foptimize-sibling-calls") #pragma GCC optimize("-fexpensive-optimizations") #pragma GCC optimize("inline-functions-called-once") #pragma GCC optimize("-fdelete-null-pointer-checks") #pragma GCC optimize("Ofast") //#pragma GCC target("avx,avx2,fma") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") //#pragma GCC optimization ("unroll-loops") #include using namespace std; typedef long long lint; typedef long double llf; typedef pair pi; struct line { long long int a, b; }; struct cht { vector v; int p; lint query(lint x) { if (v.empty()) return 1e18; while (p + 1 < v.size() && v[p].first * x + v[p].second > v[p + 1].first * x + v[p + 1].second) p++; return v[p].first * x + v[p].second; } bool chk(pi a, pi b, pi c) { return 1ll * (b.first - a.first) * (b.second - c.second) < (c.first - b.first) * (a.second - b.second); } void add(int x, lint y) { if (!v.empty() && v.back().first == x) { if (v.back().second < y) return; v.pop_back(); } while (v.size() >= p + 2 && chk(v[v.size() - 2], v.back(), pi(x, y))) { v.pop_back(); } v.emplace_back(x, y); } void clear() { p = 0; v.clear(); } }cht; long long int dp[300005]; long long int a[300005]; long long int x[300005]; long long int y[300005]; int n; int main(void) { cin.tie(0); ios::sync_with_stdio(false); cin >> n; for(int i=1;i<=n;i++) cin >> a[i]; for(int i=1;i<=n;i++) cin >> x[i]; for(int i=1;i<=n;i++) cin >> y[i]; fill(dp, dp + 300005, 1e18); dp[0] = 0; //dp[i] = min(0<=j