Submission #1241060

#TimeUsernameProblemLanguageResultExecution timeMemory
1241060MasterDebaterBank (IZhO14_bank)C++20
100 / 100
105 ms16828 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long const int N=25,P=(1<<20); ll n,m,a[N],b[N],o[P],dp[P]; int main(){ 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=1;i<P;i++)dp[i]=o[i]=-1; for(int i=0;i<(1<<m);i++)for(int j=0;j<m;j++)if((i>>j)&1){ int k=i^(1<<j); if(dp[k]==-1)continue; if(o[k]+b[j]==a[dp[k]]){ dp[i]=dp[k]+1; o[i]=0; } else if(o[k]+b[j]<a[dp[k]]){ dp[i]=dp[k]; o[i]=o[k]+b[j]; } } for(int i=0;i<P;i++)if(dp[i]==n){ cout<<"YES\n"; 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...