제출 #1311577

#제출 시각아이디문제언어결과실행 시간메모리
1311577hasanBank (IZhO14_bank)C++20
46 / 100
2 ms836 KiB
#include <bits/stdc++.h>
using namespace std;

#define endl '\n'
#define int int_fast32_t
#define ul uint_fast32_t
#define ll int_fast64_t
#define dll long double
#define ull uint_fast64_t
#define spektar this_thread::sleep_for(chrono::milliseconds(50))

void solve(){
    int n,m;
    cin >> n >> m;
    vector<pair<set<int>,int>> dp(1001);
    vector<int> k(n);
    for(auto& i:k) cin >> i;
    vector<int> k1(m);
    for(auto& i:k1) cin >> i;
    sort(k1.begin(),k1.end());
    dp[0].second=1;
    for(int i=1; i<=1000; i++){
        for(int j=0; j<m; j++){
            if(i<k1[j]) break;
            if(dp[i-k1[j]].first.find(j)!=dp[i-k1[j]].first.end()) continue;
            dp[i].second=dp[i-k1[j]].second;
            if(dp[i].second){
                dp[i].first=dp[i-k1[j]].first;
                dp[i].first.insert(j);
                break;
            }
        }
    }
    for(int i=0; i<n; i++){
        if(!dp[k[i]].second){
            cout << "NO" << endl;
            return;
        }
    }
    cout << "YES" << endl;
}

signed main(){
    //freopen("input.txt","r",stdin);
    //freopen("output.txt","w",stdout);
    
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int t=1;
    //cin >> t;
    while(t--){
        solve();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...