Submission #1276090

#TimeUsernameProblemLanguageResultExecution timeMemory
1276090nanaseyuzukiBank (IZhO14_bank)C++20
100 / 100
168 ms23300 KiB
#include <bits/stdc++.h> // Author: Kazuki_Will_Win_VOI_8703 #define fi first #define se second #define pii pair<int, int> #define ll long long #define all(a) a.begin(), a.end() using namespace std; const int mn = 1e6 + 5, bm = (1 << 20) + 1; const int inf = 1e9; int n, a[mn], m, b[mn], sum[mn], dp[mn], ok[mn]; vector <int> Megumi[mn]; bool flag[22][(1 << 20) + 1]; void backtrack(int i, int mask){ if(i == n + 1){ cout << "YES\n"; exit(0); } if(flag[i][mask]){ return; } flag[i][mask] = true; for(auto sub : Megumi[a[i]]){ if((mask & sub) == 0){ backtrack(i + 1, mask | sub); } } } void solve(){ cin >> n >> m; for(int i = 1; i <= n; i++) cin >> a[i]; for(int i = 1; i <= m; i++) cin >> b[i]; for(int mask = 0; mask < (1 << m); mask++){ for(int i = 0; i < m; i++){ if(mask & (1 << i)) sum[mask] += b[i + 1]; } if(sum[mask] <= 1000) Megumi[sum[mask]].push_back(mask); } backtrack(1, 0); cout << "NO\n"; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t = 1; // cin >> t; while(t--) 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...