제출 #334141

#제출 시각아이디문제언어결과실행 시간메모리
334141PetyBank (IZhO14_bank)C++14
71 / 100
1094 ms492 KiB
#include <bits/stdc++.h>

using namespace std;

int n, m, a[22], b[22];
vector<int>Masks[22];

void backt (int k, int mask) {
  if (k == n + 1) {
    cout << "YES\n";
    exit(0);
  }
  for (auto it : Masks[k]) {
    if (mask & it)
      continue;
    backt(k + 1, mask | it);
  }
  return;
}

int main()
{
  cin >> n >> m;
  for (int i = 1; i <= n; i++)
    cin >> a[i];
  for (int j = 0; j < m; j++)
    cin>> b[j];
  for (int mask = 0; mask < (1 << m); mask++) {
    int sum = 0;
    for (int j = 0; j < m; j++)
      if (mask & (1 << j))
        sum += b[j];
    for (int i = 1; i <= n; i++)
      if (sum == a[i])
        Masks[i].push_back(mask);
  }
  backt(1, 0);
  cout << "NO\n";
  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...