func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 2e5;   int n;   long long seg[4 * N], lazy[4 * N];   void update(int st, int en, long long v, int idx = 1, int L = 0,               int R = n - 1) {     if (L > en || R < st) {       return;     }     if (L >= st && R <= en) {       seg[idx] += v;       lazy[idx] += v;       return;     }     seg[2 * idx] += lazy[idx];     seg[2 * idx + 1] += lazy[idx];     lazy[2 * idx] += lazy[idx];     lazy[2 * idx + 1] += lazy[idx];     lazy[idx] = 0;     update(st, en, v, 2 * idx, L, (L + R) / 2);     update(st, en, v, 2 * idx + 1, (L + R) / 2 + 1, R);     seg[idx] = min(seg[2 * idx], seg[2 * idx + 1]);   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cin >> n;     int a[n], c[n];     for (int i = 0; i < n; ++i) {       cin >> a[i], --a[i];     }     for (int i = 0; i < n; ++i) {       cin >> c[a[i]];     }     long long s = 0;     for (int i = 0; i < n; ++i) {       update(i, i, s);       s += c[i];     }     long long ans = 9e18;     for (int i = 0; i < n - 1; ++i) {       update(0, a[i], c[a[i]]);       update(a[i], n - 1, -c[a[i]]);       ans = min(ans, seg[1]);     }     cout << ans;     return 0;   }   