Submission #1171032

#TimeUsernameProblemLanguageResultExecution timeMemory
1171032vicvicBootfall (IZhO17_bootfall)C++20
28 / 100
1095 ms836 KiB
#include <iostream> #include <vector> using namespace std; int n, dp[250005], v[505], rez[250005], s; void add (int val) { for (int i=s;i>=val;i--) { dp[i]+=dp[i-val]; } } void remove (int val) { for (int i=s;i>=val;i--) { dp[i]-=dp[i-val]; } } int main () { ios :: sync_with_stdio (0); cin.tie (nullptr); cin >> n; dp[0]=1; for (int i=1;i<=n;i++) { cin >> v[i]; s+=v[i]; } int cnt=0; for (int i=1;i<=s;i++) { if (rez[i]==n) { cnt++; } } for (int i=1;i<=n;i++) { add (v[i]); } if (s%2!=0 || dp[s/2]==0) { cout << 0; return 0; } for (int i=1;i<=s;i++) { dp[i]=0; } for (int i=1;i<=n;i++) { for (int j=1;j<=n;j++) { if (i!=j) add (v[j]); } int s1=s-v[i]; for (int j=0;j<=s1/2;j++) { if (!dp[j]) continue; int s2=s1-j; rez[s2-j]++; } for (int i=1;i<=s;i++) { dp[i]=0; } } for (int i=1;i<=s;i++) { if (rez[i]==n) { cnt++; } } cout << cnt << "\n"; for (int i=1;i<=s;i++) { if (rez[i]==n) { cout << i << " "; } } 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...