Submission #1161141

#TimeUsernameProblemLanguageResultExecution timeMemory
1161141uakkesBank (IZhO14_bank)C++20
100 / 100
100 ms8644 KiB
// // All truth are easy to understand once they are discovered. // The point is to discover them // #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 123; void solve(){ int n, m; cin >> n >> m; int a[n], b[m]; for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < m; i++) { cin >> b[i]; } pair<int, int> dp[1 << m]; memset(dp, 0, sizeof(dp)); for (int mask = 0; mask < (1 << m); mask++) { if (dp[mask].first == n) { cout << "YES"; return; } for (int i = 0; i < m; i++) { if ((mask & (1 << i))) continue; auto [id, val] = dp[mask]; pair<int, int> nw = dp[mask]; if (val + b[i] == a[id]){ ++nw.first; nw.second = 0; } else { nw.second += b[i]; } dp[mask + (1 << i)] = max(dp[mask | (1 << i)], nw); } } cout << "NO"; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int tt = 1; // cin >> tt; while (tt--) { solve(); cout << '\n'; } 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...