Submission #1257307

#TimeUsernameProblemLanguageResultExecution timeMemory
1257307medaaBootfall (IZhO17_bootfall)C++20
100 / 100
233 ms4460 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define endl '\n' void SOLVE() { int n; cin >> n; vector<int> a(n); for(auto & val : a) cin >> val; int sum = accumulate(a.begin(), a.end(), 0); if(sum & 1) return void(cout << 0 << endl); vector<ll> dp(sum + 1); dp[0] = 1; for(int i = 0; i < n; i++){ for(int j = sum - a[i]; j >= 0; j--){ dp[j + a[i]] += dp[j]; } } if(!dp[sum / 2]) return void(cout << 0 << endl); vector<int> freq(sum + 1); for(int i = 0; i < n; i++){ for(int j = 0; j <= sum - a[i]; j++) dp[j + a[i]] -= dp[j]; sum -= a[i]; for(int j = 0; j <= sum / 2; j++) if(dp[j]) freq[sum - 2 * j]++; sum += a[i]; for(int j = sum - a[i]; j >= 0; j--) dp[j + a[i]] += dp[j]; } vector<int> answer; for(int i = 1; i <= sum; i++){ if(freq[i] == n) answer.push_back(i); } cout << answer.size() << endl; for(auto v : answer) cout << v << " "; } signed main(){ ios_base::sync_with_stdio(false); cout.tie(nullptr); cin.tie(nullptr); //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); int o_o = 1; //cin >> o_o; while(o_o --) SOLVE(); 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...