Submission #1163755

#TimeUsernameProblemLanguageResultExecution timeMemory
1163755canhnam357Bank (IZhO14_bank)C++20
100 / 100
131 ms436 KiB
// source problem : 
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
#define lb lower_bound
#define ub upper_bound
#define MASK(i) (1LL << (i))
void ckmax(int& f, int s)
{
    f = (f > s ? f : s);
}
void ckmin(int& f, int s)
{
    f = (f < s ? f : s);
}
int a[21], b[20], n, m;
void solve(int p, int sum, int mask, int st, int used)
{
    if (p == n)
    {
        cout << "YES";
        exit(0);
    }
    if (sum > 0)
    {
        for (int i = st; i < m; i++)
        {
            if ((mask >> i) & 1)
            {
                if (b[i] <= sum && m - used >= n - p)
                {
                    solve(p, sum - b[i], mask ^ MASK(i), i + 1, used + 1);
                }
            }
        }
    }
    else solve(p + 1, a[p + 1], mask, 0, used);
}
int32_t main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> m;
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 0; i < m; i++) cin >> b[i];
    solve(0, a[0], MASK(m) - 1, 0, 0);
    cout << "NO";
    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...