Submission #1248030

#TimeUsernameProblemLanguageResultExecution timeMemory
1248030papauloBank (IZhO14_bank)C++20
100 / 100
63 ms4520 KiB
#include <bits/stdc++.h>
using namespace std;

#define MAXN 20
#define MAXM 20
#define MAXMSK (1<<MAXM)

int a[MAXN];
int b[MAXM];
int sum[MAXM+5];
int dp[MAXMSK];

int main() {
    int n, m;
    cin >> n >> m;
    for(int i=0;i<n;i++) cin >> a[i];
    for(int i=0;i<m;i++) cin >> b[i];
    memset(sum, 0, sizeof(sum));
    memset(dp, 0, sizeof(dp));
    for(int i=0;i<n;i++) sum[i+1]=sum[i]+a[i];
    dp[0]=0;
    int mxmsk=1<<m;
    for(int i=1;i<mxmsk;i++) {
        int bst=0;
        int s=0;
        for(int j=0;j<m;j++) {
            if(i&(1<<j)) {
                bst=max(bst, dp[i^(1<<j)]);
                s+=b[j];
            }
        }
        dp[i]=bst;
        if(s==sum[bst+1]) dp[i]=bst+1;
    }
    cout << (dp[mxmsk-1]==n?"YES":"NO") << endl;
    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...