# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
723483 | 2023-04-13T23:12:29 Z | PanosPask | 은행 (IZhO14_bank) | C++14 | 574 ms | 1004 KB |
#include <bits/stdc++.h> #define MAXN 20 #define CHECK_BIT(var, pos) (var & (1 << pos)) using namespace std; int n, m; // dp[i]: Contains all of the possible remaining sets of banknotes after serving the first i customers unordered_set<int> dp[MAXN + 2]; vector<int> accept_by[MAXN + 2]; int notes[MAXN + 2]; int reqs[MAXN + 2]; int calc_sum_by_subset(int s) { int ans = 0; for (int i = 0; i < m; i++) if (CHECK_BIT(s, i)) ans += notes[i]; return ans; } void remove(int i, int j) { for (int x = i; x < n; x++) reqs[x] = reqs[x + 1]; n--; for (int y = j; y < m; y++) notes[y] = notes[y + 1]; m--; } int main(void) { scanf("%d %d", &n, &m); for (int i = 1; i <= n; i++) scanf("%d", &reqs[i]); for (int j = 0; j < m; j++) scanf("%d", ¬es[j]); // Purge: If element == requirement it is optimal to remove it for (int i = 1; i <= n; i++) for (int j = 0; j < m; j++) if (reqs[i] == notes[j]) remove(i, j); int start = 0; // No notes used dp[0].insert(start); // For each customer, calculate all the acceptable sets of notes that would equate to their salary for (int i = 1; i <= n; i++) { for (int s = 0; s < (1<<m); s++) { if (calc_sum_by_subset(s) == reqs[i]) accept_by[i].push_back(s); } } // See if there are any distinct subsets for (int i = 1; i <= n; i++) { for (auto to_add : accept_by[i]) for (auto have_used : dp[i-1]) { // Check if any note is already used if ((to_add ^ have_used) != to_add + have_used) continue; // Add the current combination of notes dp[i].insert(to_add ^ have_used); } } bool ans = !dp[n].empty(); if (ans) printf("YES\n"); else printf("NO\n"); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 0 ms | 212 KB | Output is correct |
4 | Correct | 2 ms | 212 KB | Output is correct |
5 | Correct | 58 ms | 212 KB | Output is correct |
6 | Correct | 1 ms | 212 KB | Output is correct |
7 | Correct | 0 ms | 212 KB | Output is correct |
8 | Correct | 64 ms | 572 KB | Output is correct |
9 | Correct | 58 ms | 280 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Correct | 1 ms | 212 KB | Output is correct |
3 | Correct | 1 ms | 212 KB | Output is correct |
4 | Correct | 0 ms | 212 KB | Output is correct |
5 | Correct | 1 ms | 212 KB | Output is correct |
6 | Correct | 1 ms | 212 KB | Output is correct |
7 | Correct | 1 ms | 212 KB | Output is correct |
8 | Correct | 1 ms | 212 KB | Output is correct |
9 | Correct | 1 ms | 212 KB | Output is correct |
10 | Correct | 1 ms | 212 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 6 ms | 296 KB | Output is correct |
2 | Correct | 4 ms | 212 KB | Output is correct |
3 | Correct | 1 ms | 212 KB | Output is correct |
4 | Correct | 1 ms | 212 KB | Output is correct |
5 | Correct | 3 ms | 212 KB | Output is correct |
6 | Correct | 6 ms | 212 KB | Output is correct |
7 | Correct | 4 ms | 212 KB | Output is correct |
8 | Correct | 3 ms | 212 KB | Output is correct |
9 | Correct | 2 ms | 212 KB | Output is correct |
10 | Correct | 2 ms | 340 KB | Output is correct |
11 | Correct | 12 ms | 300 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Correct | 0 ms | 212 KB | Output is correct |
3 | Correct | 0 ms | 212 KB | Output is correct |
4 | Correct | 2 ms | 212 KB | Output is correct |
5 | Correct | 58 ms | 212 KB | Output is correct |
6 | Correct | 1 ms | 212 KB | Output is correct |
7 | Correct | 0 ms | 212 KB | Output is correct |
8 | Correct | 64 ms | 572 KB | Output is correct |
9 | Correct | 58 ms | 280 KB | Output is correct |
10 | Correct | 1 ms | 212 KB | Output is correct |
11 | Correct | 1 ms | 212 KB | Output is correct |
12 | Correct | 1 ms | 212 KB | Output is correct |
13 | Correct | 0 ms | 212 KB | Output is correct |
14 | Correct | 1 ms | 212 KB | Output is correct |
15 | Correct | 1 ms | 212 KB | Output is correct |
16 | Correct | 1 ms | 212 KB | Output is correct |
17 | Correct | 1 ms | 212 KB | Output is correct |
18 | Correct | 1 ms | 212 KB | Output is correct |
19 | Correct | 1 ms | 212 KB | Output is correct |
20 | Correct | 6 ms | 296 KB | Output is correct |
21 | Correct | 4 ms | 212 KB | Output is correct |
22 | Correct | 1 ms | 212 KB | Output is correct |
23 | Correct | 1 ms | 212 KB | Output is correct |
24 | Correct | 3 ms | 212 KB | Output is correct |
25 | Correct | 6 ms | 212 KB | Output is correct |
26 | Correct | 4 ms | 212 KB | Output is correct |
27 | Correct | 3 ms | 212 KB | Output is correct |
28 | Correct | 2 ms | 212 KB | Output is correct |
29 | Correct | 2 ms | 340 KB | Output is correct |
30 | Correct | 12 ms | 300 KB | Output is correct |
31 | Correct | 120 ms | 288 KB | Output is correct |
32 | Correct | 574 ms | 1004 KB | Output is correct |
33 | Correct | 402 ms | 276 KB | Output is correct |
34 | Correct | 268 ms | 280 KB | Output is correct |
35 | Correct | 124 ms | 212 KB | Output is correct |
36 | Correct | 1 ms | 212 KB | Output is correct |
37 | Correct | 117 ms | 332 KB | Output is correct |
38 | Correct | 261 ms | 284 KB | Output is correct |
39 | Incorrect | 1 ms | 212 KB | Output isn't correct |
40 | Halted | 0 ms | 0 KB | - |