Submission #169798

#TimeUsernameProblemLanguageResultExecution timeMemory
169798super_j6Bootfall (IZhO17_bootfall)C++14
100 / 100
374 ms2900 KiB
#include <iostream> #include <cstdio> #include <algorithm> #include <vector> using namespace std; #define endl '\n' #define pi pair<int, int> const int maxn = 500, m = 250001; int n; int a[maxn], dp[m]; bool used[m]; 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(int j = s - a[i]; j >= 0; j--){ dp[j + a[i]] += dp[j]; } } if(s % 2 || !dp[s / 2]){ cout << 0 << endl; cout << endl; return 0; } for(int i = 0; i < n; i++){ for(int j = 0; j <= s - a[i]; j++){ dp[j + a[i]] -= dp[j]; } for(int j = 1; j <= s; j++){ used[j] |= ((s - a[i] + j) % 2 || !dp[(s - a[i] + j) / 2]); } for(int j = s - a[i]; j >= 0; j--){ dp[j + a[i]] += dp[j]; } } vector<int> ans; for(int i = 1; i <= s; i++) if(!used[i]) ans.push_back(i); 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:56:19: 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...