Submission #397626

#TimeUsernameProblemLanguageResultExecution timeMemory
397626huukhangBank (IZhO14_bank)C++11
100 / 100
154 ms8612 KiB
/* Khangnh's code “You can either experience the pain of discipline or the pain of regret. The choice is yours.” */ // - Only when necessary :d // #pragma GCC optimize("Ofast") // #pragma GCC optimize("unroll-loops") // #pragma GCC target("avx,avx2,fma") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define fileopen(a, b) freopen(((string)a + ".inp").c_str(), "r", stdin); freopen(((string)b + ".out").c_str(), "w", stdout); #define ll long long // #define int long long #define fi first #define se second #define pb push_back #define pf push_front #define pob pop_back #define pof pop_front typedef pair<int, int> pii; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; const ll mod = 1e9 + 7; const ll inf = 1e9 + 7; const double eps = 1e-9; int n, m; int a[20], b[20]; pii dp[1 << 20]; 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]; dp[0] = {0, 0}; for (int i = 1; i < (1 << m); ++i) { dp[i] = {0, 0}; for (int j = 0; j < m; ++j) { if ((i >> j) & 1) { pii tmp = dp[i ^ (1 << j)]; if (tmp.se + b[j] < a[tmp.fi]) tmp.se += b[j]; else if (tmp.se + b[j] == a[tmp.fi]) ++tmp.fi, tmp.se = 0; dp[i] = max(dp[i], tmp); } } if (dp[i].first == n) { cout << "YES"; return; } } cout << "NO"; } signed main() { #ifdef khangorz fileopen("input", "output"); #endif #ifndef khangorz // fileopen("LAH", "LAH"); #endif ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); 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...