제출 #358538

#제출 시각아이디문제언어결과실행 시간메모리
358538nicolaalexandra은행 (IZhO14_bank)C++14
71 / 100
1091 ms504 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 (i=1;i<=n;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];
            }
            if (sum == v[i])
                L[i].push_back(mask);
        }
    }

    back (1,0);

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


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