#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 501;
bitset<N * N> st;
int freq[N * N];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
vector<int> a(n);
for (int& u : a) cin >> u;
st.reset();
st[0] = 1;
for (int i = 0; i < n; i++) st = (st << a[i]) | st;
int sum = 0;
for (int& u : a) sum += u;
if (sum % 2 != 0) return cout << 0, 0;
if (st[sum / 2] == 0) return cout << 0, 0;
for (int i = 0; i < n; i++) {
st = bitset<N * N>();
st[0] = 1;
int S = 0;
for (int j = 0; j < n; j++) if (j != i) {
st = (st << a[j]) | st;
S += a[j];
}
freq[S] += 1;
for (int j = 1; j <= S - j && j < S; j++) if (st[j]) {
assert(st[S - j]);
freq[S - 2 * j] += 1;
}
}
int count_ans = 0;
for (int j = 0; j <= sum; j++) count_ans += (freq[j] == n);
cout << count_ans << "\n";
for (int j = 0; j <= sum; j++) if (freq[j] == n)
cout << j << " ";
cout << "\n";
}
# | 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... |