| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|
| 1306663 | | 1an | 은행 (IZhO14_bank) | C++20 | | 91 ms | 8624 KiB |
#include <bits/stdc++.h>
using namespace std;
int main () {
int n, m;
cin >> n >> m;
vector<int> works(n), ps(n), notes(m);
for (int i = 0; i < n; i++) {
cin >> works[i];
ps[i] = works[i];
if (i != 0)
ps[i] += works[i - 1];
}
for (int i = 0; i < m; i++)
cin >> notes[i];
vector<pair<int, int>> dp(1 << m, {-1, -1});
dp[0] = {0, 0};
for (int mask = 0; mask < (1 << m); mask++) {
if (dp[mask].first == -1)
continue;
if (dp[mask].first == n) {
printf("YES\n");
return 0;
}
for (int i = 0; i < m; i++) {
if (mask & (1 << i))
continue;
int payment = dp[mask].second + notes[i];
if (payment == works[dp[mask].first]) {
dp[mask | (1 << i)] = max(dp[mask | (1 << i)], {dp[mask].first + 1, 0});
} else if (payment < works[dp[mask].first]) {
dp[mask | (1 << i)] = max(dp[mask | (1 << i)], {dp[mask].first, payment});
}
}
}
printf("NO\n");
}
| # | 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... |