제출 #1257835

#제출 시각아이디문제언어결과실행 시간메모리
1257835_filya_Bank (IZhO14_bank)C++20
100 / 100
107 ms16712 KiB
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;

int main()
{
// 	ifstream cin("input.txt");
//     ofstream cout("output.txt");
	ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
	int n, m; cin >> n >> m;
    vector<ll> a(n), b(m);
    for (int i = 0; i < n; i++) cin >> a[i];
    sort(a.begin(), a.end());
    for (int i = 0; i < m; i++) cin >> b[i];
    sort(b.begin(), b.end());
    vector<pair<ll, ll>> dp(1 << m, {0, 0});
    for (int mask = 1; mask < (1 << m); mask++) {
        for (int bit = 0; bit < m; bit++) if (mask & (1 << bit)) {
            pair<ll, ll> cur = dp[mask ^ (1 << bit)];
            if (cur.first == n){
                dp[mask] = cur;
                continue;
            }
            cur.second += b[bit];
            if (cur.second == a[cur.first]) {
                cur.first++;
                cur.second = 0;
            }
            dp[mask] = max(dp[mask], cur);
        } 
    } 
    cout << (dp[(1 << m) - 1].first == n ? "YES" : "NO") << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...