제출 #1306589

#제출 시각아이디문제언어결과실행 시간메모리
1306589Nipphitch은행 (IZhO14_bank)C++20
52 / 100
1097 ms6436 KiB
#include <bits/stdc++.h> using namespace std; const int N=20; int n,m,a[N+1],b[N+1],sum[(1<<N)+1]; bool dp1[(1<<N)+1],dp2[(1<<N)+1],ans; signed main() { ios::sync_with_stdio(0); cin.tie(0); cin >> n >> m; for(int i=0;i<n;i++) cin >> a[i]; for(int i=0;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]; } memset(dp1,true,sizeof(dp1)); for(int i=0;i<n;i++){ memset(dp2,false,sizeof(dp2)); for(int mask=0;mask<(1<<m);mask++){ for(int sub=mask;sub;sub=(sub-1)&mask){ int oth=mask^sub; if(!dp1[mask] || sum[sub]!=a[i]) continue; dp2[oth]=true; } } swap(dp1,dp2); } for(int mask=0;mask<(1<<n);mask++) ans|=dp1[mask]; if(ans) cout << "YES"; else cout << "NO"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...