Submission #1229862

#TimeUsernameProblemLanguageResultExecution timeMemory
1229862escobrandBank (IZhO14_bank)C++20
71 / 100
1095 ms10132 KiB
#include <bits/stdc++.h> using namespace std; #define all(v) v.begin(),v.end() #define eb emplace_back #define ll long long #define fi first #define se second short i,n,t,m,j,tmp; short a[22],b[22],sum[(1<<20)]; int mask; bool dp[22][(1<<20)],ans; vector<int> id[1000 * 20 + 10]; int main() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>m; for(i = 1;i<=n;i++) { cin>>a[i]; } for(i = 0;i<m;i++) { cin>>b[i]; } for( mask = 1;mask < (1<<m);mask++) { i = __builtin_ctz(mask); sum[mask] = sum[mask ^ (1<<i)] + b[i]; id[sum[mask]].eb(mask); } dp[0][0] = 1; for(i = 1;i<=n;i++) { for( mask = 0;mask<(1<<m);mask++) { for(int k :id[a[i]]) { if((k & mask) == k && dp[i-1][mask ^ k]) { dp[i][mask] = 1; break; } } if(dp[n][mask]) { cout<<"YES"; return 0; } } } cout<<"NO"; 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...