Submission #1141305

#TimeUsernameProblemLanguageResultExecution timeMemory
1141305crispxxBank (IZhO14_bank)C++20
100 / 100
102 ms16712 KiB
/**
 *    author: a.k
 *    created: idk
**/
#include <bits/stdc++.h>
using namespace std;

#define all(x) x.begin(), x.end()
#define int long long
#define nl '\n'

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int n, m; cin >> n >> m;
	
	vector<int> a(n), b(m);
	for(auto &u : a) cin >> u;
	for(auto &u : b) cin >> u;
	
	vector<int> rem(1 << m, -1), cnt(1 << m, -1);
	rem[0] = 0;
	cnt[0] = 0;
	for(int mask = 0; mask < 1 << m; mask++) {
		for(int last = 0; last < m; last++) {
			if(!(mask >> last & 1)) continue;
			int prev = mask & ~(1 << last);
			if(cnt[prev] == -1) continue;
			
			int cur = rem[prev] + b[last];
			int targ = a[cnt[prev]];
			
			if(cur < targ) {
				cnt[mask] = cnt[prev];
				rem[mask] = cur;
			}
			
			if(cur == targ) {
				cnt[mask] = cnt[prev] + 1;
				rem[mask] = 0;
			}
		}
		if(cnt[mask] == n) {
			cout << "YES" << nl;
			return 0;
		}
	}
	cout << "NO" << nl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...