Submission #1252246

#TimeUsernameProblemLanguageResultExecution timeMemory
1252246mbfibatBank (IZhO14_bank)C++20
0 / 100
2 ms328 KiB
#include <bits/stdc++.h>

using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);
	
	int n, m; cin >> n >> m;
	vector<int> a(n), b(m);
	
	for (int& v : a) cin >> v;
	for (int& v : b) cin >> v;	
	
	vector<int> psum(n, 0);
	for (int i = 0; i < n; i++)
		psum[i] = (i > 0 ? psum[i - 1] : 0) + a[i];
		
	vector<int> msum(1 << m, 0);
	for (int mask = 0; mask < (1 << m); mask++) {
		for (int i = 0; i < m; i++) {
			if (mask >> i & 1) {
				msum[mask] += b[i];	
			}
		}
	}
	
	vector<int> f(1 << m, 0);
	f[0] = 0;
	
	for (int mask = 0; mask < (1 << m); mask++) {
		int pos = f[mask];
		int need_sum = psum[pos];
		for (int i = 0; i < m; i++) {
			if (mask >> i & 1) {
				if (msum[mask | (1 < i)] == need_sum) {
					msum[mask | (1 << i)] = pos + 1;
					if (pos + 1 == n) {
						cout << "YES";
						return 0;
					}
				}
			}
		}
	}
	
	cout << "NO";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...