Submission #1275103

#TimeUsernameProblemLanguageResultExecution timeMemory
1275103almazBank (IZhO14_bank)C++20
71 / 100
1096 ms38820 KiB
#include <bits/stdc++.h> using namespace std; #define int long long void solve() { int n, m; cin >> n >> m; vector<int> a(n), b(m); for (int &x : a) cin >> x; for (int &x : b) cin >> x; // все подмножества b vector<pair<int,int>> subs; // {sum, mask} for (int mask = 1; mask < (1 << m); mask++) { int sum = 0; for (int j = 0; j < m; j++) if (mask & (1 << j)) sum += b[j]; subs.push_back({sum, mask}); } // сгруппируем по сумме unordered_map<int, vector<int>> by_sum; for (auto [s, mask] : subs) by_sum[s].push_back(mask); // DP: возможные наборы масок b set<int> cur; cur.insert(0); // пустое множество for (int need : a) { set<int> nxt; for (int mask : by_sum[need]) { for (int used : cur) { if ((used & mask) == 0) { nxt.insert(used | mask); } } } cur.swap(nxt); } cout << (cur.empty() ? "NO\n" : "YES\n"); } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); 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...