제출 #1189603

#제출 시각아이디문제언어결과실행 시간메모리
1189603pxsit은행 (IZhO14_bank)C++20
100 / 100
336 ms9800 KiB
#include <bits/stdc++.h>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, m, a[25], b[25];
    bitset<1 << 20> dp[25]; //thankyou jungps for this ds
    vector<int> s[1001];
    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 i = 0; i < (1 << m); i++) {
        int sum = 0;
        for (int j = 0; j < m; j++)
            if (i & (1 << j))
                sum += b[j];
        if (sum <= 1000)
            s[sum].emplace_back(i);
    }
    dp[0].reset();
    dp[0].set(0);
    for (int i = 1; i <= n; i++) {
        dp[i].reset();
        for (int j = 0; j < (1 << m); j++) {
            if (!dp[i - 1].test(j))
                continue;
            for (int k : s[a[i - 1]]) {
                if (j & k) continue;
                dp[i].set(j | k);
            }
        }
    }
    cout << (dp[n].any() ? "YES" : "NO");
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...