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... |