Submission #1115420

#TimeUsernameProblemLanguageResultExecution timeMemory
1115420vjudge1Bootfall (IZhO17_bootfall)C++17
13 / 100
2 ms348 KiB
#include "bits/stdc++.h" using namespace std; const int mxSm = 2503; const int mxN = 502; int dp[mxSm]; int a[mxN]; void solve() { int N; cin >> N; vector<int> ans; for (int i = 1; i < mxSm; i ++) { ans.push_back(i); } dp[0] = 1; int s = 0; for (int i = 0; i < N; i ++) { cin >> a[i]; for (int j = mxSm - 1; a[i] <= j; j --) { dp[j] += dp[j - a[i]]; } s += a[i]; } if (s & 1 || !dp[s / 2]) { cout << 0 << endl; return; } for (int i = 0; i < N; i ++) { s -= a[i]; for (int j = a[i]; j < mxSm; j ++) { dp[j] -= dp[j - a[i]]; } for (int j = 0; j < (int)ans.size();) { if (s < ans[j] || (s - ans[j]) & 1 || !dp[(s - ans[j]) / 2]) { swap(ans[j], ans.back()); ans.pop_back(); } else { j ++; } } s += a[i]; for (int j = mxSm - 1; a[i] <= j; j --) { dp[j] += dp[j - a[i]]; } } sort(begin(ans),end(ans)); cout << ans.size() << endl; for (int i : ans) { cout << i << ' '; } cout << endl; } int main() { solve(); }
#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...