제출 #1353581

#제출 시각아이디문제언어결과실행 시간메모리
1353581gdshirpeleng은행 (IZhO14_bank)C++20
71 / 100
1095 ms608 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
#define in insert
#define pb push_back
#define vll vector<ll>

ll n,m;

ll v[21];

ll goal;

vll nums[21];

void dfs(ll idx,ll test){
    if(idx>n){
        cout<<"YES";
        exit(0);
    }
    for(ll h:nums[idx]){
        if((test|h)==test){
            dfs(idx+1,(test^h));
        }
    }
}

void solve(){
    cin>>n>>m;
    vector<ll>a(n+1);
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=0;i<m;i++){
        cin>>v[i];
    }
    ll sum=0;
    for(int i=1;i<=n;i++){
        for(int j=0;j<(1<<m);j++){
            sum=0;
            for(ll h=0;h<m;h++){
                if((j&(1<<h))!=0){
                    sum+=v[h];
                }
            }
            if(sum==a[i]){
                nums[i].pb(j);
            }
        }
    }
    ll test=0;
    for(ll h=0;h<m;h++){
        test+=(1<<h);
    }
    dfs(1,test);
    cout<<"NO";
}

int main(){
    solve();
    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...