#include <bits/stdc++.h>
#define ll long long
using namespace std;
int main()
{
ll n;
cin>>n;
vector<ll> a(n+1);
ll sum = 0;
for (int i = 1;i<=n;i++) {
cin>>a[i];
sum += a[i];
}
if (sum%2 != 0){
cout<<0<<endl;
return 0;
}
bitset<250000+1> dp;
dp[0] = true;
for (int i = 1;i<=n;i++) {
dp |= dp<<a[i];
}
if (!dp[sum/2]) {
cout<<0<<endl;
return 0;
}
set<ll> ans;
for (int i = 1;i<=sum;i++) {
ans.insert(i);
}
for (int i = 1;i<=n;i++) {
bitset<250000+1> fe;
fe[0] = true;
for (int j = 1;j<=n;j++) {
if (j != i) {
fe |= fe<<a[j];
}
}
set<ll> co;
ll resu = sum - a[i];
for (ll z = 1;z<fe.size();z++) {
if (fe[z]) {
ll de = abs(2*z - resu);
if(ans.find(de) != ans.end()) {
co.insert(de);
}
}
}
ans = co;
}
cout<<ans.size()<<endl;
for (auto e : ans) {
cout<<e<<' ';
}
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... |