제출 #1277934

#제출 시각아이디문제언어결과실행 시간메모리
1277934zjs은행 (IZhO14_bank)C++20
100 / 100
77 ms8632 KiB
#include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; vector<int> a(n), b(m); for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 0; i < m; i++) cin >> b[i]; vector<int> f(1 << m, -1); vector<int> leftover(1 << m, -1); f[0] = 0; leftover[0] = 0; for (int s = 1; s < 1 << m; s++) { for (int i = 0; i < m; i++) { //枚举哪一张纸币排在最后 if (s >> i & 1) { int t = s ^ 1 << i; if (leftover[t] + b[i] == a[f[t]]) { f[s] = f[t] + 1; leftover[s] = 0; } else if (f[t] > f[s]) { f[s] = f[t]; leftover[s] = leftover[t] + b[i]; } } } if (f[s] == n) { cout << "YES\n"; return 0; } } cout << "NO\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...