제출 #340054

#제출 시각아이디문제언어결과실행 시간메모리
340054SprdaloBootfall (IZhO17_bootfall)C++17
6 / 100
527 ms262144 KiB
#include <bits/stdc++.h> using namespace std; #define int ll typedef long long ll; typedef long double ld; typedef pair<int, int> pi; typedef pair<ll, ll> pl; typedef vector<int> vi; typedef vector<ll> vl; typedef vector<double> vd; typedef vector<bool> vb; typedef vector<char> vc; typedef vector<string> vs; typedef vector<pi> vp; typedef vector<pl> vpl; signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cerr.tie(nullptr); int n; cin >> n; vi a(n); int suma = 0; for (auto& i : a){ cin >> i; suma += i; } set<int> d; d.insert(0); bool ok = 0; for (int i = 0; i < n; ++i){ vi tmp; for (int x : d){ tmp.push_back(x+a[i]); } for (int x : tmp){ if (2 * x == suma){ ok = 1; break; } d.insert(x); } if (ok) break; } if (!ok) return cout << "0\n", 0; vector<vi> t(n, vi(1,0)); for (int i = 0; i < n; ++i){ for (int j = 0; j < n; ++j){ if (i == j) continue; int len = t[j].size(); for (int k = 0; k < len; ++k){ t[j].push_back(a[i] + t[j][k]); } unique(t[j].begin(), t[j].end()); } } for (int i = 0; i <n; ++i) unique(t[i].begin(), t[i].end()); vi sol; vector<vi> cnt(n, vi(suma+10,0)); for (int i = 0; i < n; ++i){ int s = suma - a[i]; for (int x : t[i]){ int y = s-x; if (y <= x) continue; if (!i || cnt[i-1][y-x]) cnt[i][y-x] = 1; } } for (int i = 0; i < suma + 10; ++i) if (cnt[n-1][i]) sol.push_back(i); cout << (int)sol.size() << '\n'; for (auto& i : sol) cout << 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...