제출 #535336

#제출 시각아이디문제언어결과실행 시간메모리
535336nicolexxuu은행 (IZhO14_bank)C++14
52 / 100
1085 ms6836 KiB
#include <bits/stdc++.h> #define MAXN 21 using namespace std; int a[MAXN], b[MAXN]; bool possible[MAXN][1 << MAXN]; map<int, vector<int>> combos; int N, M; int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cin >> N >> M; for(int i = 0; i < N; i++) cin >> a[i]; for(int i = 0; i < M; i++) cin >> b[i]; for(int mask = 0; mask < (1 << M); mask++) { int sum = 0; for(int i = 0; i < M; i++) { if(mask & (1 << i)) sum += b[i]; } combos[sum].push_back(mask); } possible[0][0] = true; for(int i = 0; i < N; i++) { for(int mask = 1; mask < (1 << M); mask++) { for(int combo : combos[a[i]]) { if((combo & mask) == combo) possible[i+1][mask] |= possible[i][mask - combo]; } } } bool res = false; for(int i = 0; i < (1 << M); i++) res |= possible[N][i]; if(res) cout << "YES\n"; else cout << "NO\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...