# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
723480 | 2023-04-13T22:58:02 Z | PanosPask | 은행 (IZhO14_bank) | C++14 | 1000 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; } 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]); 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 | 1 ms | 212 KB | Output is correct |
4 | Correct | 2 ms | 212 KB | Output is correct |
5 | Correct | 57 ms | 280 KB | Output is correct |
6 | Correct | 0 ms | 212 KB | Output is correct |
7 | Correct | 1 ms | 212 KB | Output is correct |
8 | Correct | 56 ms | 596 KB | Output is correct |
9 | Correct | 54 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 | 1 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 | 0 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 | 7 ms | 212 KB | Output is correct |
2 | Correct | 3 ms | 212 KB | Output is correct |
3 | Correct | 10 ms | 340 KB | Output is correct |
4 | Correct | 12 ms | 212 KB | Output is correct |
5 | Correct | 10 ms | 296 KB | Output is correct |
6 | Correct | 5 ms | 296 KB | Output is correct |
7 | Correct | 4 ms | 212 KB | Output is correct |
8 | Correct | 3 ms | 304 KB | Output is correct |
9 | Correct | 7 ms | 212 KB | Output is correct |
10 | Correct | 7 ms | 300 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 | 1 ms | 212 KB | Output is correct |
4 | Correct | 2 ms | 212 KB | Output is correct |
5 | Correct | 57 ms | 280 KB | Output is correct |
6 | Correct | 0 ms | 212 KB | Output is correct |
7 | Correct | 1 ms | 212 KB | Output is correct |
8 | Correct | 56 ms | 596 KB | Output is correct |
9 | Correct | 54 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 | 1 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 | 0 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 | 7 ms | 212 KB | Output is correct |
21 | Correct | 3 ms | 212 KB | Output is correct |
22 | Correct | 10 ms | 340 KB | Output is correct |
23 | Correct | 12 ms | 212 KB | Output is correct |
24 | Correct | 10 ms | 296 KB | Output is correct |
25 | Correct | 5 ms | 296 KB | Output is correct |
26 | Correct | 4 ms | 212 KB | Output is correct |
27 | Correct | 3 ms | 304 KB | Output is correct |
28 | Correct | 7 ms | 212 KB | Output is correct |
29 | Correct | 7 ms | 300 KB | Output is correct |
30 | Correct | 12 ms | 300 KB | Output is correct |
31 | Correct | 113 ms | 296 KB | Output is correct |
32 | Correct | 547 ms | 1004 KB | Output is correct |
33 | Correct | 402 ms | 280 KB | Output is correct |
34 | Correct | 550 ms | 292 KB | Output is correct |
35 | Correct | 609 ms | 280 KB | Output is correct |
36 | Execution timed out | 1078 ms | 212 KB | Time limit exceeded |
37 | Halted | 0 ms | 0 KB | - |