# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1262611 | blueviolet | Bank (IZhO14_bank) | C++20 | 1096 ms | 13120 KiB |
#include <bits/stdc++.h>
#define ll long long
#define io(x) if (fopen(x".inp","r")) {freopen(x".inp","r",stdin),freopen(x".out","w",stdout);}
#define TimeRun {End=clock();cerr<<"Time run: "<<(float)(End-Begin)/CLOCKS_PER_SEC<<"s"<<el;}
#define mem(c, x) memset(c, x, sizeof(c))
#define all(c) c.begin(), c.end()
#define bit(i,j) ((i >> j) & 1)
#define se second
#define fi first
#define el '\n'
using namespace std;
template<class X, class Y> bool maximize(X &a, const Y &b) { return (a < b ? a = b, 1 : 0); }
template<class X, class Y> bool minimize(X &a, const Y &b) { return (a > b ? a = b, 1 : 0); }
int dx[8] = {0, 1, 0,-1, 1, 1,-1,-1};
int dy[8] = {1, 0,-1, 0, 1,-1,-1, 1};
const int maxn = 22;
const int Inf = 2e9 + 7;
const ll Infll = 1e18 + 9;
const ll Mod = 1e9 + 7;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
int n, m, a[maxn], b[maxn];
ll pref[maxn], sum[1 << maxn];
vector<int> subOf[maxn];
bool dp[maxn][1 << maxn];
void solve() {
cin >> n >> m;
for (int i=1; i<=n; i++) cin >> a[i], pref[i] = pref[i-1] + a[i];
for (int i=1; i<=m; i++) cin >> b[i];
subOf[0].push_back(0);
for (int mask=1; mask<(1 << m); mask++) {
sum[mask] = sum[mask-(mask&-mask)] + b[__lg(mask&-mask) + 1];
}
for (int i=1; i<=n; i++) {
for (int mask=1; mask<(1 << m); mask++) {
if (sum[mask] == pref[i]) {
subOf[i].push_back(mask);
}
}
}
dp[0][0] = true;
for (int i=1; i<=n; i++) {
for (int mask : subOf[i-1]) {
if (!dp[i-1][mask]) continue;
int left = ((1<<m)-1) ^ mask;
for (int sub=left; sub; sub = (sub - 1)&left) {
if (sum[sub] == a[i]) {
dp[i][mask^sub] = 1;
if (i == n) return void(cout << "YES");
}
}
}
}
cout << "NO";
}
signed main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); clock_t Begin = clock(), End;
io("task");
solve();
TimeRun; return (0 ^ 0);
}
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... |