제출 #358539

#제출 시각아이디문제언어결과실행 시간메모리
358539nicolaalexandra은행 (IZhO14_bank)C++14
71 / 100
1093 ms492 KiB
#include <bits/stdc++.h>

using namespace std;

int v[22],a[22];
vector <int> L[22];
int n,m,i,sol;

void back (int pas, int mask){
    if (sol)
        return;
    if (pas > n){
        sol = 1;
        return;
    }

    for (auto it : L[pas]){
        if ( (it & mask) == 0)
            back (pas+1,mask | it);
    }

}

int main (){

    //ifstream cin ("date.in");
    //ofstream cout ("date.out");

    cin>>n>>m;
    for (i=1;i<=n;i++)
        cin>>v[i];

    for (i=0;i<m;i++)
        cin>>a[i];

    for (int mask=0;mask<(1<<m);mask++){
        int sum = 0;
        for (int bit=0;bit<m;bit++){
            if (mask & (1<<bit))
                sum += a[bit];
        }

        for (i=1;i<=n;i++){
            if (v[i] == sum)
                L[i].push_back(mask);
        }
    }


    back (1,0);

    if (sol)
        cout<<"YES";
    else cout<<"NO";


    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...