Submission #1282853

#TimeUsernameProblemLanguageResultExecution timeMemory
1282853ayazBootfall (IZhO17_bootfall)C++20
13 / 100
1057 ms576 KiB
#include <bits/stdc++.h>
using namespace std;

#ifdef LOCAL
    // #include "debug.h"
#else
    #define debug(...) 42
#endif

#define ll long long
#define ld long double
#define inf 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define all(x) (x).begin(), (x).end()
#define isz(x) (int)(x.size())

const int MXN = 500;
const ll mod = 998244353;
int a[MXN], n;
bool check(int idx) {
    vector<int> b;
    int sum = 0;
    for (int i = 1; i <= n+1; i++) if (i != idx) {
        b.push_back(a[i]);
        sum += a[i];
    }
    if (sum & 1) return false;
    sum /= 2;
    bitset<10001> dp;
    dp[0] = 1;
    for (int x : b)
        dp |= (dp << x);
    return dp[sum];
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
#ifdef LOCAL
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    freopen("err.log", "w", stderr);
#endif
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    sort(a+1, a+1+n);
    vector<int> answ;
    for (int v = 1; v <= 2000; v++) {
        a[n+1] = v;
        bool ok = true;
        for (int i = 1; i <= n+1; i++) {
            ok &= check(i);
            if (!ok) break;
        }    
        if (ok) answ.push_back(v);
    }
    cout << isz(answ) << "\n";
    for (auto &el : answ) cout << el << " ";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...