제출 #479995

#제출 시각아이디문제언어결과실행 시간메모리
479995Dima_Borchuk은행 (IZhO14_bank)C++17
71 / 100
1090 ms332 KiB
#pragma GCC optimize("Ofast") #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define sz(x) int32_t(x.size()) #define pii pair < int, int > #include <bits/stdc++.h> #define ld long double #define ll long long #define _ << ' ' << #define se second #define fi first //#define int ll using namespace __gnu_pbds; using namespace std; template <typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; mt19937 gen(chrono::system_clock::now().time_since_epoch().count()); const int mod = (int)1e9 + 9; const int N = (int)1e6 + 5; const int INF = (int)1e16 + 5; vector < int > a, b; vector < bool > used; bool ans = true; void solve(int l) { vector < pii > v; for (int i = 0; i < sz(b); i++) { if (!used[i]) { v.push_back({ b[i], i }); } } int n = sz(v); for (int i = 1; i < (1 << n); i++) { int s = 0; for (int j = 0; j < n; j++) { if ((1 << j) & i) { s += v[j].first; } } if (s == a[l]) { if (l == sz(a) - 1) { cout << "YES\n"; exit(0); } for (int j = 0; j < n; j++) { if ((1 << j) & i) { used[v[j].second] = true; } } solve(l + 1); for (int j = 0; j < n; j++) { if ((1 << j) & i) { used[v[j].second] = false; } } } } } int32_t main() { #ifdef LOCAL // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); #endif // LOCAL ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; a.resize(n); b.resize(m); used.resize(m, false); for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < m; i++) { cin >> b[i]; } solve(0); cout << "NO\n"; 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...