제출 #1171094

#제출 시각아이디문제언어결과실행 시간메모리
1171094vicvicBootfall (IZhO17_bootfall)C++20
100 / 100
353 ms2860 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=val;i<=s;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<=n;i++) { int s1=s-v[i]; remove (v[i]); for (int j=0;j<=s1;j++) { if (!dp[j]) continue; rez[max (0, s1-j-j)]++; } add (v[i]); } 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...