#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
void SOLVE() {
int n; cin >> n;
vector<int> a(n);
for(auto & val : a) cin >> val;
int sum = accumulate(a.begin(), a.end(), 0);
if(sum & 1) return void(cout << 0 << endl);
vector<ll> dp(sum + 1);
dp[0] = 1;
for(int i = 0; i < n; i++){
for(int j = sum - a[i]; j >= 0; j--){
dp[j + a[i]] += dp[j];
}
}
if(!dp[sum / 2]) return void(cout << 0 << endl);
vector<int> freq(sum + 1);
for(int i = 0; i < n; i++){
for(int j = 0; j <= sum - a[i]; j++)
dp[j + a[i]] -= dp[j];
sum -= a[i];
for(int j = 0; j <= sum / 2; j++)
if(dp[j]) freq[sum - 2 * j]++;
sum += a[i];
for(int j = sum - a[i]; j >= 0; j--)
dp[j + a[i]] += dp[j];
}
vector<int> answer;
for(int i = 1; i <= sum; i++){
if(freq[i] == n) answer.push_back(i);
}
cout << answer.size() << endl;
for(auto v : answer) cout << v << " ";
}
signed main(){
ios_base::sync_with_stdio(false); cout.tie(nullptr); cin.tie(nullptr);
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int o_o = 1; //cin >> o_o;
while(o_o --) SOLVE();
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |