Submission #1335220

#TimeUsernameProblemLanguageResultExecution timeMemory
1335220ladnooooBank (IZhO14_bank)C++20
0 / 100
15 ms31724 KiB
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define int long long

int a[27], b[27];

int n, m;

const int maxN = 2e6 + 7;

int dp[maxN], dp1[maxN];

void solve() {
    cin >> n >> m;
    for(int i = 1; i <= n; i++) cin >> a[i];
    for(int i = 1; i <= m; i++) cin >> b[i];
    memset(dp, -1, sizeof(dp));
    memset(dp1, -1, sizeof(dp1));
    dp[0] = 1;
    dp[1] = 0;
    for(int i = 0; i < (1 << m); i++) {
        for(int j = 0; j < m; j++) {
            if(!(i & (1 << j))) continue;
            int cur = i & ~(1 << j);
            if(dp[cur] == -1) continue;
            int now = dp1[cur] + b[j + 1];
            int target = a[dp[cur]];
            if(target > now) {
                dp[i] = dp[cur];
                dp1[i] = now;
            } else if(target == now) {
                dp[i] = dp[cur] + 1;
                dp1[i] = 0;
            }

        }   
        if(dp[i] > n) {
            cout << "YES\n";
            return;
        }
    }    
    cout << "NO\n";
}

signed main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    //freopen("input.txt", "r", stdin);
    int t = 1;
    //cin >> t;
    while(t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...