#include <bits/stdc++.h>
#define forn(i, n) for (int i = 0; i < n; i++)
#define ull unsigned long long
#define ll long long
#define int long long
#define SPEED \
ios_base::sync_with_stdio(false); \
cin.tie(0); \
cout.tie(0)
using namespace std;
const int N = 4e5 + 13;
const int maxa = 2e5 + 13;
const ll mod = 1e8 + 7;
using tp = tuple<ll, ll, ll>;
const int mxn = 2e5 + 13;
const int mxa = 500 + 13;
void prestart() {}
void start() {
int n;
cin >> n;
int a[n];
forn(i, n) cin >> a[i];
bool dp[n + 1][mxa];
for(int i = 0; i <= n; i++) {
fill(dp[i], dp[i] + mxa, false);
dp[i][0] = true;
}
for(int j = 0; j <= n; j++) {
for(int i = 0; i < n; i++) {
if (i == j) continue;
for(int w = mxa - 1; w >= a[i]; w--) {
dp[j][w] |= dp[j][w - a[i]];
}
}
}
int sm = accumulate(a, a + n, 0LL);
vector<int> ans;
for(int i = 1; i < mxa; i++) {
bool flag = true;
for(int j = 0; j <= n; j++) {
int tmp = sm - a[j] + i;
if (!(tmp % 2 == 0 && dp[j][tmp / 2])) {
flag = false;
break;
}
}
if (flag) {
ans.push_back(i);
}
}
cout << (int)ans.size() << "\n";
for(int i : ans) {
cout << i << " ";
}
if ((int)ans.size() != 0) cout << "\n";
return;
}
signed main()
{
SPEED;
int t = 1;
prestart();
// cin >> t;
while (t--)
{
start();
}
}
# | 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... |