#include <bits/stdc++.h>
using namespace std;
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#pragma GCC optimize("Ofast,unroll-loops,fast-math,O3")
#define pb push_back
#define int long long
const int maxN = 25e4 + 7;
int dp[maxN], cnt[maxN];
void solveStupid() {
int n;
cin >> n;
vector<int> a(n);
int sum = 0;
dp[0] = 1;
for(int i = 0; i < n; i++) {
cin >> a[i];
for(int j = maxN - 1; j >= a[i]; j--) {
dp[j] += dp[j - a[i]];
}
sum += a[i];
}
if(sum % 2 == 1 || dp[sum / 2] == 0) {
cout << "0\n";
return;
}
/*for(int i = 1; i <= sum; i++) {
cout << i << ':' << dp[i] << '\n';
}*/
for(int i = 0; i < n; i++){
for(int j = a[i]; j < maxN; j++){
dp[j] -= dp[j - a[i]];
}
for(int j = 0; j <= sum - a[i]; j++){
if(!dp[j]) continue;
int x = j, y = sum - a[i] - j;
cnt[abs(x - y)]++;
}
for(int j = maxN - 1; j >= a[i]; j--){
dp[j] += dp[j - a[i]];
}
}
vector<int> res;
for(int i = 0; i < maxN; i++) {
if(cnt[i] == n * 2) res.pb(i);
}
int z = res.size();
cout << z << '\n';
for(int x : res) {
cout << x << ' ';
}
}
signed main() {
//freopen("input.txt", "r", stdin);
//freopen("sum.in", "r", stdin);
//freopen("sum.out", "w", stdout);
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int t = 1;
//cin >> t;
while (t--) {
solveStupid();
}
}
# | 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... |