Submission #526060

#TimeUsernameProblemLanguageResultExecution timeMemory
526060TheKingAleksBootfall (IZhO17_bootfall)C++14
13 / 100
30 ms1328 KiB
#include<bits/stdc++.h> using namespace std; const int MAX_N = 505; const int MAX_N2 = 255025; int sum,n,dp[MAX_N2],cnt[MAX_N2],a[MAX_N]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n; for(int i=0; i<n; i++) { cin>>a[i]; sum+=a[i]; } dp[0] = 1; for(int i=0; i<n; i++) { for(int s=MAX_N2-a[i]; s>=0; s--) { dp[s+a[i]] += dp[s]; } } if(sum%2 != 0 || dp[sum/2] == 0) { cout<<0<<endl; return 0; } for(int i=0; i<n; i++) /// ignore i-th { for(int s=0; s<MAX_N2; s++) { dp[s+a[i]] -= dp[s]; } sum-=a[i]; for(int x0=0; x0<MAX_N2 && x0<=sum; x0++) { if((sum+x0)%2 == 0) { if(dp[(sum+x0)/2] > 0) { cnt[x0]++; } } } sum+=a[i]; for(int s=MAX_N2-a[i]-1; s>=0; s--) { dp[s+a[i]] += dp[s]; } } vector<int> res; for(int x0=0; x0<MAX_N2; x0++) { if(cnt[x0] == n) { res.push_back(x0); } } cout<<res.size()<<endl; for(auto x: res) cout<<x<<" "; }
#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...