제출 #1323613

#제출 시각아이디문제언어결과실행 시간메모리
13236131otaBootfall (IZhO17_bootfall)C++20
13 / 100
1095 ms444 KiB
#include <bits/stdc++.h>
using namespace std;

#define endl "\n"
#define int long long
#define pii pair<int, int>
#define ff first
#define ss second
#define entire(x) (x).begin(), (x).end()

int32_t main(){
    ios::sync_with_stdio(false); cin.tie(nullptr);

    int n; cin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; i++) cin >> a[i];

    // 250067

    auto isgood = [&](vector<int> arr, int cur){
        arr.push_back(cur);
        bool isgood = true; 
        int sum = accumulate(entire(arr), 0ll);
        for (int idx = 0; idx <= n; idx++) {
            int target = sum - arr[idx];
            if (target % 2) isgood = false;
            if (!isgood) break;
            target /= 2;
            vector<bool> vis(target + 1, false); vis[0] = true;
            for (int i = 0; i <= n; i++){
                if (i == idx) continue;
                for (int v = target - arr[i]; v > -1; v--) if (vis[v]) vis[v + arr[i]] = true;
            } if (!vis[target]) isgood = false;
        } return isgood;
    };

    vector<int> ans;

    int lim = accumulate(entire(a), 0ll);
    for (int cur = 0; cur < lim; cur++) {
        if (isgood(a, cur)) ans.push_back(cur); 
    }

    cout << (int) ans.size() << endl;
    for (auto v : ans) cout << v << " ";

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