#include <bits/stdc++.h>
using namespace std;
void maxsum_subset_of_two_array(vector<int> a, vector<int> b, vector<int> q){
int n = a.size();
vector<int> dp(n,0);
for (int i = 0; i < n; i++){
if(i == 0){
dp[i] = max(a[i], b[i]);
}
else if( i == 1){
dp[i] = max({a[i], b[i], dp[i-1]});
}
else {
dp[i] = max({dp[i-1], a[i]+dp[i-2], b[i]+dp[i-2]});
}
}
for (int& i: q){
cout << dp[i] << " ";
}
}
int main() {
// your code goes here
vector<int> a = {2, 3, 4, -8, 2};
vector<int> b = {-5, 8, 3, 1, -4};
vector<int> q = {0, 1, 2, 3, 4};
maxsum_subset_of_two_array(a, b, q);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIG1heHN1bV9zdWJzZXRfb2ZfdHdvX2FycmF5KHZlY3RvcjxpbnQ+IGEsIHZlY3RvcjxpbnQ+IGIsIHZlY3RvcjxpbnQ+IHEpewoJaW50IG4gPSBhLnNpemUoKTsKCQoJdmVjdG9yPGludD4gZHAobiwwKTsKCQoJZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspewoJCWlmKGkgPT0gMCl7CgkJCWRwW2ldID0gbWF4KGFbaV0sIGJbaV0pOwoJCX0KCQllbHNlIGlmKCBpID09IDEpewoJCQlkcFtpXSA9IG1heCh7YVtpXSwgYltpXSwgZHBbaS0xXX0pOwoJCX0KCQllbHNlIHsKCQkJZHBbaV0gPSBtYXgoe2RwW2ktMV0sIGFbaV0rZHBbaS0yXSwgYltpXStkcFtpLTJdfSk7CgkJfQoJfQoJCglmb3IgKGludCYgaTogcSl7CgkJY291dCA8PCBkcFtpXSA8PCAiICI7Cgl9Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJdmVjdG9yPGludD4gYSA9IHsyLCAzLCA0LCAtOCwgMn07IAoJdmVjdG9yPGludD4gYiA9IHstNSwgOCwgMywgMSwgLTR9OwoJdmVjdG9yPGludD4gcSA9IHswLCAxLCAyLCAzLCA0fTsKCQoJbWF4c3VtX3N1YnNldF9vZl90d29fYXJyYXkoYSwgYiwgcSk7CglyZXR1cm4gMDsKfQ==