Submission #1198279

#TimeUsernameProblemLanguageResultExecution timeMemory
1198279newsboyBank (IZhO14_bank)C++20
100 / 100
104 ms16784 KiB
#include <iostream> #include <string> #include <vector> #include <algorithm> #include <iomanip> #include <set> #include <map> #include <numeric> #include <iomanip> #include <unordered_set> #include <unordered_map> #include <bitset> #include <queue> #include <deque> #include <stack> #include <cmath> #include <tuple> #include <cassert> #include <list> #include <random> #include <initializer_list> using namespace std; using ll = long long; using ull = unsigned long long; using ld = long double; constexpr ll inf = 1e18 + 10; constexpr ll N = 1e7; constexpr ll MIN = -inf; constexpr ll MAX = inf; void solve() { ll n, m; cin >> n >> m; vector<ll> a(n), b(m); for (ll i = 0; i < n; ++i) { cin >> a[i]; } for (ll i = 0; i < m; ++i) { cin >> b[i]; } vector<ll> p(1 << m, -1), l(1 << m, -1); p[0] = 0; l[0] = 0; for (ll t = 1; t < (1 << m); ++t) { for (ll i = 0; i < m; ++i) { if ((~t >> i & 1)) continue; ll prev = t ^ 1 << i; if (p[prev] == -1) continue; ll cur = l[prev] + b[i]; ll target = a[p[prev]]; if (cur < target) { p[t] = p[prev]; l[t] = cur; } else if (cur == target) { p[t] = p[prev] + 1; l[t] = 0; } } if (p[t] == n) { cout << "YES\n"; return; } } cout << "NO\n"; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int t = 1; /*cin >> t;*/ while (t--) { 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...