제출 #1319231

#제출 시각아이디문제언어결과실행 시간메모리
1319231tkm_algorithms은행 (IZhO14_bank)C++20
100 / 100
322 ms11200 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; //#define int ll using P = pair<int, int>; #define all(x) x.begin(), x.end() #define rep(i, l, n) for (int i = l; i < (n); ++i) #define sz(x) (int)x.size() const char nl = '\n'; const int mod = 1e9+7; const int N = 20; int sum[1<<N], vis[1<<N]; void solve() { int n, m; cin >> n >> m; vector<int> a(n), b(m); for (auto &i: a)cin >> i; for (auto &i: b)cin >> i; rep(i, 1, (1<<m)) rep(j, 0, m) if (i&(1<<j))sum[i] += b[j]; vector<int> g[n]; rep(i, 0, n) rep(j, 1, (1<<m)) if (sum[j] == a[i])g[i].push_back(j); vector<int> l = g[0]; rep(i, 1, n) { vector<int> nw; for (auto j: l) for (auto k: g[i])if (!(k&j) && !vis[k|j])nw.push_back(k|j), vis[k|j] = 1; l = nw; memset(vis, 0, sizeof vis); } cout << (sz(l)?"YES":"NO") << nl; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); solve(); 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...