Submission #1273665

#TimeUsernameProblemLanguageResultExecution timeMemory
1273665askewwBank (IZhO14_bank)C++20
0 / 100
1 ms572 KiB
#include <bits/stdc++.h> using namespace std; template<typename T> using V = vector<T>; const int INF = 1000000007; int n, m; V<int> a, b, p, l; int main() { cin >> n >> m; a = V<int>(n); for (int i = 0; i < n; i++) cin >> a[i]; a.push_back(INF); b = V<int>(n); for (int i = 0; i < m; i++) cin >> b[i]; p = l = V<int>(1 << m, -1); p[0] = 0; l[0] = 0; for (int S = 0; S < 1 << m; S++) { if (p[S] == -1) continue; for (int i = 0; i < m; i++) { if (S & (1 << i)) continue; int nS = S ^ (1 << i), nl = l[S] + b[i], np = p[S] + (nl == a[p[S]]); if (nl > a[p[S]]) continue; if (nl == a[p[S]]) { if (np > p[nS]) { p[nS] = np; l[nS] = 0; } } else { if (np > p[nS] || (np == p[nS] && nl > l[nS])) { p[nS] = np; l[nS] = nl; } } } } cout << (p[(1 << m) - 1] == n ? "YES" : "NO") << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...