#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; std::vector weights; std::vector> dp; bool solve(int index, int left, int right) { if(dp[index][left] != -1) return dp[index][left]==1; if(index == weights.size()) { if(left == right) return true; return false; } dp[index][left] = (solve(index+1, left+weights[index], right) || solve(index+1, left, right+weights[index]))?1:0; return dp[index][left]==1; } int main() { int N; cin >> N; weights.resize(N); for(auto &weight : weights) cin >> weight; dp.resize(N+1); for(int i=0; i