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