#include #include #include #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. int total = 0, covered = 0, max = 0; for (int i = 0; i < p.size(); i++) { total += p[i]; } for (int i = 0; i < y.size(); i++) { int lower = y[i] - r[i]; int upper = y[i] + r[i]; int uncovered = 0; auto l = std::lower_bound(x.begin(), x.end(), lower); auto h = std::upper_bound(x.begin(), x.end(), upper); for (int j = (l - x.begin()); j <= (h - x.begin()); j++) { uncovered += p[j]; covered += p[j]; } max = uncovered > max ? uncovered : max; } return total - covered + max; } 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; }