#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 range_size = 2*y.size(); vector< long > range(range_size); for(int i = 0, j = 0; i < range_size; i = i+2, j++){ int t = y[j] - r[j]; if(t > 0) range[i] = t; else range[i] = 1; range[i+1] = y[j] + r[j]; } //range array done. int x_size = x.size(); int y_size = y.size(); vector pep_cov(y_size); //int temp = 0; for(int i = 0, k = 0; i < range_size; i = i+2, k++){ pep_cov[k] = 0; for(int j = 0; j < x_size ;j++){ if((x[j] <= range[i+1]) && (x[j] >= range[j])){ pep_cov[k] += p[j]; } } }//I have found maximum people cover array. //cout << "Hi i am here at 28" < max_pep) max_pep = pep_cov[i]; } //Ok! i have found maximum people covered under biggest cloud. //Now find already sunny people. int sunny = 0; for(int i = 0; i < x_size; i++){ sunny += p[i]; } for(int i = 0; i < x_size ; i++){ // bool flag = false; for(int j = 0 ; j= range[i]){ sunny -= p[i]; break; } } } return max_pep + sunny; } 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; }