#include using namespace std; //map> M; map M; int n, m; int main() { cin >> n; vector pop(n); vector loc(n); int L, R = 0; int ans = 0, total = 0; for(int i=0; i> pop[i]; total += pop[i]; } for(int i=0; i> loc[i]; M[loc[i]] = i; R = max(R, loc[i]); } cin >> m; vector pos(m); vector range(m); for(int i=0; i> pos[i]; R = max(R, 0); } vector covered(R+10, 0); vector> C(m); for(int i=0; i> range[i]; for(int j=pos[i]-range[i]; j<=pos[i]+range[i]; j++) { covered[j]++; if(M.count(j)) { total -= pop[M[j]]; C[i].push_back(j); } } } cerr << total << endl; int maxDiff = 0; for(int i=0; i maxDiff) { maxDiff = diff; ans = total + diff; } } } cout << ans << endl; /* for(auto it : M) { int position = it.first, town = it.second; if(covered[position]) { total -= pop[town]; } } */ return 0; }