제출 #1368612

#제출 시각아이디문제언어결과실행 시간메모리
1368612bnijaamaa은행 (IZhO14_bank)C++20
0 / 100
1095 ms22820 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long
#define nn endl
#define pb push_back

int n, m;
vector<int> b(25), a(25);
map<pair<int, int>, bool> memo;
bool rec(int id, int sum)
{
    if (sum == b[id]) return true;
    if (sum > b[id]) return false;
    int mask = 0;
    for (int i = 1; i <= m; i++)
    {
        if (a[i] == -1)
        {
            mask |= (1LL << (i - 1));
        }
    }
    if (memo.count({sum, mask}))   return memo[{sum, mask}];
    for (int i = 1; i <= m; i++)
    {
        if (a[i] == -1) continue;
        int x = a[i];
        a[i] = -1;
        if (rec(id, sum + x))
        {
            return memo[{sum, mask}] = true;
        }
        a[i] = x;
    }
    return memo[{sum, mask}] = false;
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        cin >> b[i];
    }
    for (int i = 1; i <= m; i++)
    {
        cin >> a[i];
    }
    bool ok = true;
    for (int i = 1; i <= n; i++)
    {
        memo.clear();
        if (!rec(i, 0))
        {
            ok = false;
            break;
        }
    }
    if (ok) cout << "YES" << nn;
    else cout << "NO" << nn;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…