#include <bits/stdc++.h>
#define fi first
#define se second
#define ld long double
#define pii std::pair<int, int>
#define piii std::pair<pii, pii>
#define rep(i,a) for (int i = 0; i < a; ++i)
#define per(i,a) for (int i = a - 1; i >= 0; --i)
int N;
int sum;
int a[505];
std::bitset<125001> dp[502];
bool check(int x) {
for (int i = 1; i <= N; ++i) {
int cur_sum = sum + x - a[i];
if (cur_sum & 1) {
return false;
}
if (!dp[i][cur_sum / 2])
return false;
}
return true;
}
void solve() {
std::cin >> N;
for (int i = 1; i <= N + 1; ++i)
dp[i][0] = 1;
for (int i = 1; i <= N; ++i) {
std::cin >> a[i];
sum += a[i];
}
if (N == 1) {
std::cout << 0 << '\n';
return;
}
for (int i = 1; i <= N + 1; ++i) {
for (int j = 1; j <= N; ++j) if (i != j) {
dp[i] |= (dp[i] << a[j]);
}
}
if ((sum & 1) || !dp[N + 1][sum / 2]) {
std::cout << 0 << '\n';
return;
}
int ans = 0;
std::vector<int> res;
for (int x = 1; x <= sum / 2; ++x) {
if (check(x)) {
ans++;
res.push_back(x);
}
}
std::cout << ans << '\n';
for (int x : res)
std::cout << x << ' ';
}
int main() {
// std::freopen("input.txt", "r", stdin);
// std::freopen("palin.inp", "r", stdin);
// std::freopen("sushi.out", "w", stdout);
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
int T = 1;
// std::cin >> T;
while (T--)
solve();
}
// 14 / 2 (87.5% Rate)
# | 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... |