Submission #1236762

#TimeUsernameProblemLanguageResultExecution timeMemory
1236762SG2AlokBank (IZhO14_bank)C++20
71 / 100
609 ms327680 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; typedef long long ll; using namespace __gnu_pbds; #define endl '\n' #define hitaf ios_base::sync_with_stdio(false); cin.tie(0); #define fi first #define se second template <typename T> using ordered_set = tree<T,null_type,less<T>,rb_tree_tag, tree_order_statistics_node_update>; const ll MOD = 1e9 + 7; const ll MOD1 = 998244353; const ll INF = 4500000000000000000LL; const ll INF1 = 1e18; const ll mod1 = 6900000469; const ll mod2 = 698000002369; const int block = 160; int n, m, k, q, a[1200005], b[500005], c[500005]; string s, s1, s2; int main() { hitaf int T = 1; // cin >> T; while(T--){ cin >> n >> m; for(int i = 1; i <= n; i++) cin >> a[i]; for(int i = 1; i <= m; i++) cin >> b[i]; vector<int> sum((1 << m) + 2); for(int i = 0; i < (1 << m); i++){ for(int j = 0; j < m; j++){ if(i & (1 << j)){ sum[i] += b[j + 1]; } } } vector<vector<int>> able(n + 2); for(int i = 1; i <= n; i++){ for(int j = 0; j < (1 << m); j++){ if(sum[j] != a[i]) continue; able[i].push_back(j); } } vector<int> dp; dp.push_back(0); for(int i = 1; i <= n; i++){ vector<int> nDp; for(auto x: dp){ for(auto y: able[i]){ if(!(x & y)){ nDp.push_back(x + y); } } } dp = nDp; } dp.empty() ? cout << "NO" << endl : cout << "YES" << endl; } } /* 8 3 4 2 1 5 7 6 1 5 6 7 2 4 3 8 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...