제출 #683008

#제출 시각아이디문제언어결과실행 시간메모리
683008maks007은행 (IZhO14_bank)C++14
44 / 100
60 ms8532 KiB
#include "bits/stdc++.h"

using namespace std;

signed main () {
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int n,m;
	cin >> n >> m;
	vector <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 <vector <int>> dp(n, vector <int> (1 << m, 0));
	for(int i = 0; i < n; i ++) {
		for(int mask = 0; mask < (1 << m); mask ++) {
			int sum = 0;
			for(int j = 0; j < m; j ++) {
				if(mask & (1 << j)) sum += b[j];
			}
			// cout << sum << " " << a[i] << "\n";
			if(sum == a[i]) {
				if(i == 0) dp[i][mask]=1;
				else {
					for(int mask2 = 0; mask2 < (1 << m); mask2 ++) {
						if(mask2 & mask) continue;
						if(dp[i-1][mask2]==1){
							dp[i][mask^mask2]=1;
							break;
						}
					}
				}
			}
		}
	}
	// for(int i = 0; i < n; i ++) {
	// 	for(int mask = 0; mask < (1 << m); mask ++) {
	// 		cout << dp[i][mask] << " " << i << " " << mask << "\n";
	// 	}
	// }
	if(count(dp[n-1].begin(), dp[n-1].end(), 1)) 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...