답안 #524256

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
524256 2022-02-08T21:40:31 Z macktvz 은행 (IZhO14_bank) C++17
71 / 100
886 ms 262148 KB
#include <bits/stdc++.h>
using namespace std;
 
// can we split B into disjoint subsets s.t. there is at least one subset per Ai
// for multiple A, need to find subsets that satisfy each A and & to 0
// dp[MASK] = TRUE if 
 
int main() {
    int n,m; cin >> n >> m;
    vector<int> A(n);
  	vector<int> B(m);
    for(auto &a : A) cin >> a;
    for(auto &b : B) cin >> b;
    vector<vector<int>> S(n); // with some sum there are only sqrt(sum) different possible values
    for(int mask = 0; mask < (1<<m); mask++) {
        int s = 0;
        for(int i = 0; i < m; i++) {
            if (mask&(1<<i)) s += B[i];
        }
        for(int i = 0; i < n; i++) {
            if (s == A[i]) S[i].push_back(mask);
        }
    }
    vector<vector<int>> dp((1 << n));
    for(int i = 0; i < n; i++) {
        dp[1<<i]=S[i];
    }
    for(int mask = 0; mask < (1 << n); mask++) {
        if (__builtin_popcount(mask) <= 1) continue;
        int ch;
        for(int i = 0; i < n; i++) { // find first bit set
            if (mask&(1<<i)) {
                ch = i;
                break;
            }
        }
        for(int j : dp[mask^(1<<ch)]) {
            for(int i : S[ch]) {
                if ((j&i) == 0) {
                    dp[mask].push_back(j|i);
                }
            }
        }
    }
    int sz = (int)dp[(1<<n)-1].size();
    cout << (sz == 0 ? "NO" : "YES") << '\n';
}

Compilation message

bank.cpp: In function 'int main()':
bank.cpp:38:29: warning: 'ch' may be used uninitialized in this function [-Wmaybe-uninitialized]
   38 |             for(int i : S[ch]) {
      |                             ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 2 ms 204 KB Output is correct
5 Correct 54 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 0 ms 204 KB Output is correct
8 Correct 54 ms 336 KB Output is correct
9 Correct 54 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 1 ms 288 KB Output is correct
3 Correct 1 ms 292 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 0 ms 296 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 3 ms 1060 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 296 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 292 KB Output is correct
11 Correct 1 ms 588 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 0 ms 204 KB Output is correct
4 Correct 2 ms 204 KB Output is correct
5 Correct 54 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 0 ms 204 KB Output is correct
8 Correct 54 ms 336 KB Output is correct
9 Correct 54 ms 204 KB Output is correct
10 Correct 0 ms 332 KB Output is correct
11 Correct 1 ms 288 KB Output is correct
12 Correct 1 ms 292 KB Output is correct
13 Correct 0 ms 204 KB Output is correct
14 Correct 0 ms 296 KB Output is correct
15 Correct 1 ms 204 KB Output is correct
16 Correct 1 ms 204 KB Output is correct
17 Correct 1 ms 204 KB Output is correct
18 Correct 1 ms 204 KB Output is correct
19 Correct 1 ms 204 KB Output is correct
20 Correct 1 ms 204 KB Output is correct
21 Correct 1 ms 204 KB Output is correct
22 Correct 1 ms 332 KB Output is correct
23 Correct 3 ms 1060 KB Output is correct
24 Correct 1 ms 204 KB Output is correct
25 Correct 1 ms 296 KB Output is correct
26 Correct 1 ms 204 KB Output is correct
27 Correct 1 ms 204 KB Output is correct
28 Correct 1 ms 204 KB Output is correct
29 Correct 1 ms 292 KB Output is correct
30 Correct 1 ms 588 KB Output is correct
31 Correct 57 ms 292 KB Output is correct
32 Correct 886 ms 6844 KB Output is correct
33 Correct 64 ms 324 KB Output is correct
34 Correct 65 ms 272 KB Output is correct
35 Correct 66 ms 272 KB Output is correct
36 Correct 172 ms 58468 KB Output is correct
37 Correct 55 ms 204 KB Output is correct
38 Correct 57 ms 204 KB Output is correct
39 Runtime error 476 ms 262148 KB Execution killed with signal 9
40 Halted 0 ms 0 KB -