제출 #1350182

#제출 시각아이디문제언어결과실행 시간메모리
1350182islam_2010은행 (IZhO14_bank)C++20
100 / 100
95 ms8516 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int sz = 1<<20;

vector<int> dp(sz, -1);

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m;
    cin >> n >> m;
    int sum = 0;
    int sal[n];
    int bank[m];
    for(int i = 0; i < n; i++){
        
        cin >> sal[i];
        sum += sal[i];
    }for(int j = 0; j < m; j++){
        cin >> bank[j];
    }dp[0] = 0;
    for(int mask = 1; mask < sz; mask++){
        for(int i = 0; i < m; i++){
            if(mask&(1<<i) && dp[mask^(1<<i)] >= 0){
                int c = dp[mask^(1<<i)];
                int ind = 0;
                while(c >= sal[ind]){
                    c -= sal[ind];
                    ind++;
                }
                c = sal[ind] - c;
                if(bank[i] <= c){
                    dp[mask] = dp[mask^(1<<i)] + bank[i];
                }
                if(dp[mask] == sum){
                    cout << "YES\n";
                    return 0;
                }
            }
        }
    }cout << "NO\n";
    
    

    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...