#include "leetcode.h" class Solution { public: int tallestBillboard(vector &rods) { unordered_map dp; dp[0] = 0; for (int i : rods) { unordered_map tmp; for (auto &it : dp) { int diff = it.first; tmp[diff + i] = max(tmp[diff + i], dp[diff] + i); tmp[diff - i] = max(tmp[diff - i], dp[diff]); } dp.clear(); dp.insert(tmp.begin(), tmp.end()); } return dp[0]; } }; int main() { Solution obj; vector rods = {1, 2, 3, 6}; cout << obj.tallestBillboard(rods); }