Submission #1245143

#TimeUsernameProblemLanguageResultExecution timeMemory
1245143nanh0607Bank (IZhO14_bank)C++20
100 / 100
95 ms8520 KiB
#include <bits/stdc++.h> #include <cstdlib> using namespace std; using ll = long long; using str = string; using pii = pair<int, int>; using pil = pair<int, ll>; using pll = pair<ll, ll>; #define FOR(i, l, r) for (int i=l; i<=r; i++) #define FOR2(i, l, r) for (int i=l; i>=r; i--) #define ALL(v) v.begin(), v.end() #define fi first #define se second #define ce cout << endl #define pb push_back #define eb emplace_back const ll MOD = 998244353; const int INF = 1e9; const int LOG = 60; const int MAX = 26; void solve() { int n, m; cin >> n >> m; vector<int> a(n), b(m); FOR(i, 0, n-1) cin >> a[i]; FOR(i, 0, m-1) cin >> b[i]; vector<pii> dp((1 << m), {0, 0}); // person, state FOR(mask, 0, (1 << m)-1) { if (dp[mask].fi == n) { cout << "YES"; return; } FOR(i, 0, m-1) { if (mask & (1 << i)) continue; pii cur = dp[mask]; if (cur.se + b[i] == a[cur.fi]) cur = {cur.fi + 1, 0}; else cur = {cur.fi, cur.se + b[i]}; dp[mask | (1 << i)] = max(dp[mask | (1 << i)], cur); } } cout << "NO"; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); // freopen("movie.in", "r", stdin); // freopen("movie.out", "w", stdout); int t = 1; // cin >> t; while (t--) 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...