Submission #826713

#TimeUsernameProblemLanguageResultExecution timeMemory
826713SoulKnightBank (IZhO14_bank)C++17
19 / 100
72 ms1364 KiB
#include "bits/stdc++.h" using namespace std; #define ll long long #define ln '\n' const int N = 20; const int LG = 21; const ll INF = 5e18; const int MOD = 998244353; vector<int> v[1000 * N + 5], s[1000*N + 5]; int n, m; int a[N], b[N], d[1000 * N + 5]; vector<int> banknote; queue<pair<int, int>> q; void print(int x){ bitset<20> y(x); cout << y << ln; } bool check(int x, int which){ for (auto& u: v[which]) { if ((u | x) == x) return true; } return false; } void solve(){ 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 i = 1; i < (1 << n); i++){ int sum = 0, idx = -1; for (int j = 0; j < LG; j++){ if ((1 << j) & i) {sum += a[j]; idx = j;} } if (a[idx] == sum) d[sum] = -1; else d[sum] = sum - a[idx]; s[sum].push_back(i); if (d[sum] != 0) banknote.push_back(sum); } sort(banknote.begin(), banknote.end()); // for (auto& u: s[2]) print(u); // for (auto& u: s[8]) print(u); // for (auto& u: s[10]) print(u); // for(auto& u: banknote) cout << u << ' '; for (int i = 1; i < (1 << m); i++){ int sum = 0; for (int j = 0; j < LG; j++){ if ((1 << j) & i) {sum += b[j];} } if (!binary_search(banknote.begin(), banknote.end(), sum)) continue; // print(i); // cout << sum << ln; if (d[sum] == -1 || check(i, d[sum])) { // for (int j = 0; j < LG; j++){ // if ((1 << j) & i) v[sum][j].push_back(i); // } v[sum].push_back(i); // cout << "added" << ln; } } int total = accumulate(a, a+n, 0); cout << ((v[total].empty())? "NO": "YES") << ln; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); // freopen("mooyomooyo.in", "r", stdin); // freopen("mooyomooyo.out", "w", stdout); // ll T; cin >> T; // while (T--){ // solve(); // } // init(); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...