Submission #1306591

#TimeUsernameProblemLanguageResultExecution timeMemory
1306591NipphitchBank (IZhO14_bank)C++20
100 / 100
94 ms8644 KiB
#include <bits/stdc++.h>
using namespace std;
const int N=20;

int n,m,a[N+1],b[N+1];
pair <int,int> dp[(1<<N)+1];

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];
    dp[0]={0,0};
    for(int mask=0;mask<(1<<m);mask++){
        if(dp[mask].first==n){
            cout << "YES\n";
            exit(0);
        }
        for(int i=0;i<m;i++){
            if(mask&(1<<i)) continue;
            pair <int,int> nxt;
            if(a[dp[mask].first]==dp[mask].second+b[i]) nxt={dp[mask].first+1,0};
            else nxt={dp[mask].first,dp[mask].second+b[i]};
            dp[mask|(1<<i)]=max(dp[mask|(1<<i)],nxt);
        }
    }
    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...