제출 #879772

#제출 시각아이디문제언어결과실행 시간메모리
879772The_Samurai은행 (IZhO14_bank)C++17
0 / 100
2 ms348 KiB
// I stand with PALESTINE




//#pragma GCC optimize("Ofast,O3")
//#pragma GCC target("avx,avx2")
#include "bits/stdc++.h"

using namespace std;
using ll = long long;

void solve() {
    int n, m;
    cin >> m >> n;
    vector<int> a(n), b(m), cnt(1001);
    int diff = 0;
    for (int i = 0; i < m; i++) {
        cin >> b[i];
        diff += !cnt[b[i]];
        cnt[b[i]]++;
    }
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int bt = 0; bt < (1 << n); bt++) {
        int now = diff, sum = 0;
        bool last = (bt & 1) > 0;
        for (int i = 0; i < n; i++) {
            if (((bt & (1 << i)) > 0) == last) {
                sum += a[i];
            } else {
                if (sum <= 1000) cnt[sum]--;
                if (cnt[sum] == 0) now--;

                sum = a[i];
                last = !last;
            }
        }
        if (sum <= 1000) cnt[sum]--;
        if (cnt[sum] == 0) now--;
        if (now == 0) {
            cout << "YES";
            return;
        }
        sum = 0;
        last = (bt & 1) > 0;
        for (int i = 0; i < n; i++) {
            if (((bt & (1 << i)) > 0) == last) {
                sum += a[i];
            } else {
                if (sum <= 1000) cnt[sum]++;

                sum = a[i];
                last = !last;
            }
        }
        if (sum <= 1000) cnt[sum]++;
    }
    cout << "NO";
}

int main() {
    cin.tie(0)->sync_with_stdio(false);
#ifdef sunnatov
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
    int q = 1;
//    cin >> q;
    while (q--) {
        solve();
        cout << '\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...