Submission #947602

#TimeUsernameProblemLanguageResultExecution timeMemory
947602PringBootfall (IZhO17_bootfall)C++17
65 / 100
1058 ms908 KiB
#include <bits/stdc++.h> using namespace std; #ifdef MIKU string dbmc = "\033[1;38;2;57;197;187m", dbrs = "\033[0m"; #define debug(x...) cout << dbmc << "[" << #x << "]: ", dout(x) void dout() { cout << dbrs << endl; } template <typename T, typename ...U> void dout(T t, U ...u) { cout << t << (sizeof...(u) ? ", " : ""); dout(u...); } #else #define debug(...) 39 #endif #define int long long #define fs first #define sc second #define mp make_pair #define FOR(i, j, k) for (int i = j, Z = k; i < Z; i++) typedef pair<int, int> pii; const int MXN = 250005; int n, a[MXN]; int sum; bitset<MXN> ans, b, c; bool check() { if (sum & 1) return false; ans.reset(); ans[0] = true; FOR(i, 0, n) ans |= (ans << a[i]); return ans[sum / 2]; } void miku() { cin >> n; FOR(i, 0, n) cin >> a[i]; FOR(i, 0, n) sum += a[i]; if (!check()) { cout << 0 << '\n' << '\n'; return; } ans.set(); FOR(i, 0, n) { b.reset(); c.reset(); b[0] = true; FOR(j, 0, n) { if (j == i) continue; b |= (b << a[j]); } FOR(j, 0, sum - a[i] + 1) if (b[j]) c[abs(sum - a[i] - 2 * j)] = true; ans &= c; } cout << ans.count() << '\n'; FOR(i, 0, MXN) if (ans[i]) cout << i << ' '; cout << '\n'; } int32_t main() { cin.tie(0) -> sync_with_stdio(false); cin.exceptions(cin.failbit); miku(); 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...