Submission #499717

#TimeUsernameProblemLanguageResultExecution timeMemory
499717Ronin13Bootfall (IZhO17_bootfall)C++14
28 / 100
629 ms5188 KiB
#include<bits/stdc++.h> #define ll long long #define ull unsigned ll #define pb push_back #define epb emplace_back #define f first #define s second #define pii pair<int,int> #define pll pair<ll,ll> #define inf 1e9+1 #define linf 1e18+1 using namespace std; bool dp[101][250001]; void solve(){ int n;cin>>n; int a[n+1]; for(int i=1;i<=n;i++)cin>>a[i]; int mx=0; for(int i=1;i<=n;i++){ mx=max(mx,a[i]); } mx*=n; for(int i=0;i<=n;i++){ dp[i][0]=true; for(int j=1;j<=n;j++){ if(j==i)continue; for(int x=mx;x>=0;x--){ if(x-a[j]>=0&&dp[i][x-a[j]])dp[i][x]=true; } } } int sum=0; for(int i=1;i<=n;i++) sum+=a[i]; vector<int>ans; if(!dp[0][sum/2]){ cout<<0; return; } for(int i=1;i<=sum;i++){ bool ind=true; for(int j=1;j<=n;j++){ int x=sum+i; x-=a[j]; if(x&1){ ind=false;break; } ind&=dp[j][x/2]; } if(ind)ans.pb(i); } cout<<ans.size()<<"\n"; for(int to:ans)cout<<to<<" "; } int main(){ ios_base::sync_with_stdio(false);cin.tie(0); int test=1;//cin>>test; while(test--)solve(); }
#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...