제출 #1141478

#제출 시각아이디문제언어결과실행 시간메모리
1141478imarnBank (IZhO14_bank)C++20
71 / 100
1095 ms4680 KiB
#include<bits/stdc++.h> #define ll long long #define pii pair<int,int> #define pll pair<ll,ll> #define plx pair<ll,int> #define f first #define s second #define pb push_back #define all(x) x.begin(),x.end() #define vi vector<int> #define vvi vector<vi> #define pp pair<ll,int> #define ub(x,i) upper_bound(all(x),i)-x.begin() #define lb(x,i) lower_bound(all(x),i)-x.begin() #define t3 tuple<int,int,int> using namespace std; const int mxn=5e5+5; bool fo=0; int a[20],b[20]; int dp[1<<20]{0}; vector<int>v[20]; void solve(int i,int use,int n){ if(fo)return; if(i==n){ fo=1; return; } for(auto it : v[i]){ bool oj=1; for(int j=0;j<20;j++)if(((use>>j)&1)&&((it>>j)&1)){oj=0;} if(oj)solve(i+1,use^it,n); } } int main(){ ios_base::sync_with_stdio(0);cin.tie(0); int n,m;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 i=0;i<(1<<m);i++){ for(int j=0;j<m;j++){ if(i&(1<<j))dp[i]+=b[j]; }for(int j=0;j<n;j++)if(dp[i]==a[j])v[j].pb(i); }solve(0,0,n); cout<<(fo?"YES":"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...