Submission #1131303

#TimeUsernameProblemLanguageResultExecution timeMemory
1131303Pishka12Bootfall (IZhO17_bootfall)C++20
28 / 100
1095 ms3440 KiB
#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 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...