이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define mp make_pair
using namespace std;
bool pay(int n, int m, vector<int>& a, vector<int>& b) {
if (m < n) return false;
vector<bool> dp(n);
int mask = 0;
queue<pair<int, pair<int, int>>> q;
q.push(mp(0, mp(0, a[0])));
while (!q.empty()) {
int mask = q.front().first;
int index = q.front().second.first;
int sum = q.front().second.second;
q.pop();
for (int i = 0; i < m; ++i) {
if (!(mask & (1<<i))) {
if (b[i] < sum) {
q.push(mp(mask | (1<<i), mp(index, sum - b[i])));
} else if (b[i] == sum) {
dp[index] = true;
if (index+1 < n) q.push(mp(mask | (1<<i), mp(index+1, a[index+1])));
}
}
}
}
return dp[n-1];
}
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 j = 0; j < m; ++j) cin >> b[j];
if (pay(n, m, a, b)) cout << "YES\n";
else cout << "NO\n";
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
bank.cpp: In function 'bool pay(int, int, std::vector<int>&, std::vector<int>&)':
bank.cpp:10:9: warning: unused variable 'mask' [-Wunused-variable]
10 | int mask = 0;
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |