제출 #1107269

#제출 시각아이디문제언어결과실행 시간메모리
1107269vjudge1은행 (IZhO14_bank)C++17
71 / 100
1073 ms6920 KiB
#include <bits/stdc++.h>

using namespace std;

#define nl '\n'
#define pb push_back

int n, m, a[20], b[20];
map<int, vector< int >>mp;
bool ch;

void rec( int i, int msk )
{
	if( i == n )
	{
		ch = true;
		return;
	}
	for( int x: mp[a[i]] )
	{
		bool ch1 = true;
		for( int k = 0; k < 20; ++k )
			if( ((1 << k) & x) && ((1 << k) & msk) )
			{
				ch1 = false;
				break;
			}
		if( ch1 )
			rec(i + 1, msk + x);
	}
}

void solve()
{
    cin >>n >>m;
    for( int i = 0; i < n; ++i )
    	cin >>a[i];
    for( int j = 0; j < m; ++j )
    	cin >>b[j];
    for( int mask = 0; mask < (1 << m); ++mask )
   	{
   		int sum = 0;
   		for( int i = 0; i < m; ++i )
   			if( (1 << i) & mask )
   				sum += b[i];
   		mp[sum].pb( mask );
   	}
   	rec(0, 0);
   	cout <<(ch ? "YES" : "NO");
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);
    int T = 1;
    // cin >>T;
    while( T-- )
    	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...