Submission #1313519

#TimeUsernameProblemLanguageResultExecution timeMemory
1313519shirokitoBank (IZhO14_bank)C++20
100 / 100
540 ms4524 KiB
#include <bits/stdc++.h>
using namespace std;

#define all(a) (a).begin(), (a).end()
#define BIT(mask, i) (((mask) >> (i)) & 1)

using ll = long long;

const int N = 20;
const int INF = 1e9;

int n, m, a[N], b[N];
int dp[1 << N];

void solve() {
    cin >> n >> m;

    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }

    for (int i = 0; i < m; i++) {
        cin >> b[i];
    }

    for (int mask = 0; mask < (1 << m); mask++) {
        dp[mask] = -INF;
    }

    dp[0] = 0;

    int sum = 0;
    for (int i = 0; i < n; i++) {
        sum += a[i];
        for (int mask = 0; mask < (1 << m); mask++) {
            if (dp[mask] == -INF) continue;
            for (int j = 0; j < m; j++) if (!BIT(mask, j)) {
                dp[mask | (1 << j)] = dp[mask] + b[j];
            }
        }
        for (int mask = 0; mask < (1 << m); mask++) {
            if (dp[mask] != sum) dp[mask] = -INF;
        }
    }

    for (int mask = 0; mask < (1 << m); mask++) {
        if (dp[mask] != -INF) {
            cout << "YES" << '\n';
            return;
        }
    }

    cout << "NO" << '\n';
}   

signed main() {
    cin.tie(0) -> sync_with_stdio(0);

    #define task "bank"
    if (fopen(task".in", "r")) {
        freopen(task".in", "r", stdin);
        freopen(task".out", "w", stdout);
    }

    int T = 1; // cin >> T;
    while (T--) {
        solve();
    }
}

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:61:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   61 |         freopen(task".in", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
bank.cpp:62:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   62 |         freopen(task".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...