제출 #1196421

#제출 시각아이디문제언어결과실행 시간메모리
1196421mkrtich_2010_은행 (IZhO14_bank)C++20
52 / 100
270 ms264916 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int main(){
    ll n, m; cin>>n>>m;
    vector<ll> a(n);
    vector<ll> b(m);
    vector<vector<ll>> dp(1<<m, vector<ll>(n));
    for(ll i = 0; i < n; i++) cin>>a[i];
    for(ll i = 0; i < m; i++) cin>>b[i];
    vector<vector<ll>> c(1001);
    for(ll i = 0; i < (1<<m); i++){
        ll sum = 0;
        for(ll j = 0; j < m; j++){
            if(i&(1<<j)){
                sum += b[j];
            }
            if(sum <= 1000) c[sum].push_back(i);
        }
    }
    for(auto i : c[a[0]]){
        dp[i][0] = 1;
    }
    for(ll i = 0; i < (1<<m); i++){
        for(ll j = 0; j < n-1; j++){
            if(dp[i][j] == 0) continue;
            for(ll k : c[a[j+1]]){
                if(i & k) continue;
                dp[i | k][j+1] = 1;
            }
        }
        if(dp[i][n-1] == 1){
            cout<<"YES"<<endl;
            return 0;
        }
    }
    cout<<"NO"<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...