Submission #169775

#TimeUsernameProblemLanguageResultExecution timeMemory
169775super_j6Bootfall (IZhO17_bootfall)C++14
28 / 100
1080 ms13144 KiB
#include <iostream> #include <cstdio> #include <algorithm> #include <set> #include <map> #include <vector> using namespace std; #define endl '\n' #define pi pair<int, int> const int maxn = 500, m = 250001; int n; int a[maxn]; map<int, int, greater<int>> dp; set<int> cur; int s; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cin >> n; dp[0] = 1; for(int i = 0; i < n; i++){ cin >> a[i]; s += a[i]; for(auto it = dp.begin(); it != dp.end();){ int j = it->first; it++; dp[j + a[i]] += dp[j]; } } if(s % 2 || !dp[s / 2]){ cout << 0 << endl; cout << endl; return 0; } for(int i = 1; i < m; i++) cur.insert(i); for(int i = 0; i < n; i++){ for(auto it = prev(dp.end()); it != dp.begin();){ int j = it->first; it--; if(!dp[j]) dp.erase(j); else dp[j + a[i]] -= dp[j]; } for(auto it = cur.begin(); it != cur.end();){ int x = *it; it++; if((s - a[i] + x) % 2 || dp.find((s - a[i] + x) / 2) == dp.end()) cur.erase(x); } for(auto it = dp.begin(); it != dp.end();){ int j = it->first; it++; dp[j + a[i]] += dp[j]; } } vector<int> ans; for(auto it = cur.begin(); it != cur.end(); it++) ans.push_back(*it); cout << ans.size() << endl; if(!ans.empty()){ cout << ans[0]; for(int i = 1; i < ans.size(); i++) cout << " " << ans[i]; } cout << endl; return 0; }

Compilation message (stderr)

bootfall.cpp: In function 'int main()':
bootfall.cpp:71:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int i = 1; i < ans.size(); i++) cout << " " << ans[i];
                  ~~^~~~~~~~~~~~
#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...