Submission #1271228

#TimeUsernameProblemLanguageResultExecution timeMemory
1271228LucasLeBootfall (IZhO17_bootfall)C++20
65 / 100
1097 ms13096 KiB
#include <bits/stdc++.h> #define fi first #define se second #define ld long double #define pii std::pair<int, int> #define piii std::pair<pii, pii> #define rep(i,a) for (int i = 0; i < a; ++i) #define per(i,a) for (int i = a - 1; i >= 0; --i) int N; int sum; int a[505]; std::bitset<250001> dp[502]; int cnt[250001]; void solve() { std::cin >> N; for (int i = 1; i <= N + 1; ++i) dp[i][0] = 1; for (int i = 1; i <= N; ++i) { std::cin >> a[i]; sum += a[i]; } if (N == 1) { std::cout << 0 << '\n'; return; } for (int i = 1; i <= N + 1; ++i) { for (int j = 1; j <= N; ++j) if (i != j) { dp[i] |= (dp[i] << a[j]); } } if ((sum & 1) || !dp[N + 1][sum / 2]) { std::cout << 0 << '\n'; return; } for (int x = 0; x <= sum; ++x) { for (int i = 1; i <= N; ++i) if (dp[i][x]) { int val = x * 2 + a[i] - sum; if (val >= 1 && val <= sum) cnt[val]++; } } int ans = 0; for (int i = 1; i <= sum; ++i) if (cnt[i] == N) ans++; std::cout << ans << '\n'; for (int i = 1; i <= sum; ++i) if (cnt[i] == N) std::cout << i << ' '; } int main() { // std::freopen("input.txt", "r", stdin); // std::freopen("palin.inp", "r", stdin); // std::freopen("sushi.out", "w", stdout); std::ios_base::sync_with_stdio(false); std::cin.tie(0); int T = 1; // std::cin >> T; while (T--) solve(); } // 14 / 2 (87.5% Rate)
#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...