#include using namespace std; long maximumPeople(vector p, vector x, vector y, vector r) { // Return the maximum number of people that will be in a sunny town after removing exactly one cloud. vector town_cloud_count(p.size(), 0); vector town_cloud_idx(p.size(), -1); for (int i = 0; i < p.size(); ++i) { for (int j = 0; j < y.size(); ++j) { long begin_cloud = y[j] - r[j]; long end_cloud = y[j] + r[j]; if (begin_cloud >= x[i] && x[i] <= end_cloud) { town_cloud_count[i] += 1; town_cloud_idx[i] = j; } } } long max_cloud = 0; long uncovered_people = 0; vector cloud_people(y.size(), 0); for (int i = 0; i < town_cloud_count.size(); ++i) { if (town_cloud_count[i] == 0) { uncovered_people += p[i]; } else if (town_cloud_count[i] == 1){ cloud_people[town_cloud_idx[i]] += p[i]; if (cloud_people[town_cloud_idx[i]] > max_cloud) { max_cloud = cloud_people[town_cloud_idx[i]]; } } } return uncovered_people + max_cloud; } int main() { int n; cin >> n; vector p(n); for(int p_i = 0; p_i < n; p_i++){ cin >> p[p_i]; } vector x(n); for(int x_i = 0; x_i < n; x_i++){ cin >> x[x_i]; } int m; cin >> m; vector y(m); for(int y_i = 0; y_i < m; y_i++){ cin >> y[y_i]; } vector r(m); for(int r_i = 0; r_i < m; r_i++){ cin >> r[r_i]; } long result = maximumPeople(p, x, y, r); cout << result << endl; return 0; }