제출 #1004066

#제출 시각아이디문제언어결과실행 시간메모리
1004066Luvidi은행 (IZhO14_bank)C++17
100 / 100
222 ms28544 KiB

#include <bits/stdc++.h>
using namespace std;
 
#define ll long long
#define pll pair<ll, ll>
#define pii pair<int, int>
#define fs first
#define sc second
#define pb push_back
 
void solve() {
    int n,m;
    cin>>n>>m;
    int a[n],b[m];
    for(int i=0;i<n;i++)cin>>a[i];
    for(int i=0;i<m;i++)cin>>b[i];
    vector<int> ma[20001];
    for(int m1=0;m1<(1<<m);m1++){
        int s=0;
        for(int i=0;i<m;i++){
            if(m1&(1<<i))s+=b[i];
        }
        ma[s].pb(m1);
    }
    bool x[n][1<<m];
    memset(x,0,sizeof(x));
    vector<int> v;
    v.pb(0);
    for(int i=0;i<n;i++){
        vector<int> v2;
        for(int m1:v){
            for(int m2:ma[a[i]]){
                if((m1&m2)==0){
                    if(!x[i][m1^m2]){
                        v2.pb(m1^m2);
                        x[i][m1^m2]=1;
                    }
                }
            }
        }
        v=v2;
    }
    if(!v.empty())cout<<"YES";
    else cout<<"NO";
}
 
int main() {   
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
 
    solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...