This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int const maxn = 500*500 + 9;
bitset <maxn> b;
int a[505];
int cnt[maxn];
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n;
cin >> n;
b[0] = 1;
long long sum = 0;
for(int i = 0; i < n; i ++) {
cin >> a[i];
sum += a[i];
b |= b << a[i];
}
if(sum & 1 || !b[sum / 2]) {
return cout << 0, 0;
}
for(int i = 0; i < n; i ++) {
b.reset();
b[0] = 1;
for(int j = 0; j < n; j ++)
if(i != j)
b |= b << a[j];
for(int j = 1; j < maxn; j ++) {
int me = j + j - sum + a[i];
if(b[j] && me > 0)
cnt[me] ++;
}
}
vector <int> v;
for(int i = 1; i < maxn; i ++)
if(cnt[i] == n)
v.push_back(i);
cout << v.size() << '\n';
for(int i : v)
cout << i << ' ';
}
# | 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... |