제출 #1141292

#제출 시각아이디문제언어결과실행 시간메모리
1141292Bilal_Coder은행 (IZhO14_bank)C++20
19 / 100
0 ms328 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

bool canPaySalary(int salary, vector<int>& banknotes) {
    int maxSum = 1000; // Maximum possible salary
    vector<bool> dp(maxSum + 1, false);
    dp[0] = true;

    for (int b : banknotes) {
        for (int j = maxSum; j >= b; --j) {
            if (dp[j - b]) dp[j] = true;
        }
    }

    return dp[salary];
}

bool canPayAllSalaries(vector<int>& salaries, vector<int>& banknotes) {
    for (int salary : salaries) {
        if (!canPaySalary(salary, banknotes)) return false;

        // Deduct used banknotes for this salary
        vector<int> temp;
        for (int b : banknotes) {
            if (salary >= b) {
                salary -= b;
            } else {
                temp.push_back(b);
            }
        }
        banknotes = temp;
    }
    return true;
}

int main() {
    int n, m;
    cin >> n >> m;

    vector<int> salaries(n), banknotes(m);
    for (int i = 0; i < n; ++i) cin >> salaries[i];
    for (int i = 0; i < m; ++i) cin >> banknotes[i];

    if (canPayAllSalaries(salaries, banknotes)) {
        cout << "YES" << endl;
    } else {
        cout << "NO" << endl;
    }

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