Submission #1286309

#TimeUsernameProblemLanguageResultExecution timeMemory
1286309alizhanBank (IZhO14_bank)C++20
100 / 100
369 ms103112 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int mod = 1e9 + 7; const int N = (int)2e5 + 7; #define skip continue #define uno first #define duo second #define GO while(tt--) #define ins insert #define pb push_back #define all(x) x.begin(), x.end() #define Kaldun ios::sync_with_stdio(false); cin.tie(nullptr) #define int long long int bp(int a, int n) { if(n == 0) return 1; if(n % 2 == 1) return (bp(a, n-1) * a) % mod; long long b = bp(a, n/2); return (b * b) % mod; } int dp[22][(1<<20) + 2]; int lcm(int a,int b){ return (a * b) / __gcd(a,b);} void solve(){ int n,m; cin>>n>>m; int a[n+1],b[m+1]; int cnt[1005]{}; int mx = 0; for(int i=1;i<=n;i++){ cin>>a[i]; cnt[a[i]] = 1; mx=max(mx,a[i]); } for(int i=0;i<m;i++){ cin>>b[i]; } vector<int> g[1005]; for (int mask=0;mask < (1<<m); mask++) { int t = 0; for (int i = 0; i < m; i++) { if (mask & (1 << i)) { t += b[i]; } } if (t <= mx && cnt[t]) { g[t].push_back(mask); } } dp[0][0] = 1; for (int i = 0; i < n; i++) { int ok = 0; for (int mask = 0; mask < (1 << m); mask++) { if (!dp[i][mask]) continue; for (int sb : g[a[i + 1]]) { if ((sb & mask) == 0) { dp[i + 1][mask | sb] = 1; ok = 1; } } } if (ok == 0) { cout << "NO" <<endl;; return; } } cout<<"YES"<<endl; } signed main() { Kaldun; cout.precision(0); int tt=1; //cin>>tt; while(tt--){ 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...