# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
590792 | Mazaalai | Bank (IZhO14_bank) | C++17 | 95 ms | 4428 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#pragma GCC optimize("unroll-loops,fast-math,bits")
// #pragma GCC target("avx2")
#define ff first
#define ss second
using namespace std;
using sint = short int;
using PII = pair <sint, sint>;
signed main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
sint n, m; cin >> n >> m;
sint a[n], b[m];
PII dp[1<<m];
for (sint i = 0; i < n; i++) cin >> a[i];
for (sint i = 0; i < m; i++) cin >> b[i];
sort(a, a+n);
sort(b, b+m);
dp[0] = {0, 0};
bool done = 0;
for (int i = 1; i < (1<<m) && !done; i++) {
dp[i] = {0, 0};
for (sint j = 0; j < m; j++) {
if (!(i & (1<<j)) || dp[i].ff > dp[i^(1<<j)].ff) continue;
PII& tmp = dp[i^(1<<j)];
if (tmp.ff > dp[i].ff) dp[i] = tmp;
if (a[tmp.ff] >= b[j]+tmp.ss && dp[i].ss < b[j]+tmp.ss) dp[i].ss = b[j]+tmp.ss;
}
if (dp[i].ss == a[dp[i].ff]) dp[i] = {dp[i].ff+1, 0};
done |= dp[i].ff == n;
}
cout << (done ? "YES" : "NO") << "\n";
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |