제출 #794929

#제출 시각아이디문제언어결과실행 시간메모리
794929nguyennehehe은행 (IZhO14_bank)C++14
19 / 100
70 ms300 KiB
#include<bits/stdc++.h>
using namespace std;

const int N = 20;

int n, m, a[N], b[N];

void sub1() {
  bool ok = false;
  for (int s = 1; s < (1 << m); ++s) {
    int sum = 0;
    for (int i = 0; i < m; ++i) {
      if (s >> i & 1) sum += b[i];
    }

    ok |= sum == a[0];
  }

  cout << (ok ? "YES" : "NO");
}

void sub2() {
  bool good = false;
  do {
    bool ok = true;
    for (int i = 0, j = 0; i < n; ++i) {
      int sum = 0;
      while (j < m && sum < a[i]) {
        sum += b[j];
        j += 1;
      }
      ok &= sum == a[i];
    }
    good |= ok;
  } while (next_permutation(b + 1, b + m + 1));
  cout << (good ? "YES": "NO");
}

signed main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  cin >> n >> m;
  for (int i = 0; i < n; ++i) cin >> a[i];
  for (int i = 0; i < m; ++i) cin >> b[i];
  if (n == 1) sub1();
  else if (n <= 10 && m <= 10) sub2();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...