Submission #1284383

#TimeUsernameProblemLanguageResultExecution timeMemory
1284383I_FloPPed21Bootfall (IZhO17_bootfall)C++20
28 / 100
1006 ms3044 KiB
#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
    cin>>n;
    long long suma=0;
    vector<int>v(n+1,0);
    for(int i=1; i<=n; i++)
    {
        cin>>v[i];
        suma+=v[i];
    }
    set<int>ans;
    map<int,int>cnt;
    for(int i=1; i<=n+1; i++)
    {
        bitset<500*500+200>dp;
        dp[0]=1;
        long long suma2=0;
        for(int j=1; j<=n; j++)
        {

            if(i!=j)
            {
                suma2+=v[j];
                dp|=(dp<<v[j]);
            }
        }

        if(i==n+1)
        {

            if(!dp[suma2/2])
            {
                cout<<0<<'\n';
                return 0;
            }


            break;
        }
        for(int j=0; j<=suma; j++)
        {
            if(dp[j])
            {
                //cout<<j<<" "<<dp[j]<<" "<<i<<" "<<suma2<<'\n';
                long long other=suma2-j;
                if(other-j>0)
                {
                    cnt[other-j]++;
                    if(cnt[other-j]==n)
                        ans.insert(other-j);
                }
            }
        }
    }
    if(ans.empty())
        cout<<0;
    else
    {cout<<ans.size()<<'\n';
        for(auto u:ans)
            cout<<u<<" ";}
    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...