Submission #1270287

#TimeUsernameProblemLanguageResultExecution timeMemory
1270287zuz14은행 (IZhO14_bank)C++20
0 / 100
2 ms328 KiB
#include <bits/stdc++.h>
#define F first
#define S second 
using namespace std;

int n, m, salary[21], bank[21];

bool dfs(int k, int mask){
    int c=0;
    bool b, res=0;

    //cout<<k<<' '<<mask<<endl;
    if (k>=n || salary[k]==0) return 1;
    if (mask==(1<<20)-1) return 0;
    for (int i=0; i<(1<<m); i++) {
        b=1, c=0;
        for (int j=0; j<m; j++){
            if (i & (1<<j)) c+=bank[i];
            if ((i & (1<<j)) && (mask & (1<<j))) b=0;
        }
        if (b && c==salary[k]) res=max(res, dfs(k+1, mask+i));
    }

    return res;
}

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    cin>>n>>m;
    for (int i=0; i<n; i++) cin>>salary[i];
    for (int i=0; i<m; i++) cin>>bank[i];

    bool c=dfs(0, 0);
    if (c) cout<<"YES";
    else cout<<"NO";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...