Submission #1313328

#TimeUsernameProblemLanguageResultExecution timeMemory
1313328aicloBank (IZhO14_bank)C++20
71 / 100
1096 ms4776 KiB
#include <bits/stdc++.h>
using namespace std;

int sum[1 << 20];
int a[20], b[20];
int n, m;

void wczytaj(){
	cin >> n >> m;
	
	for(int i = 0; i < n; i++) cin >> a[i];
	for(int i = 0; i < m; i++) cin >> b[i];

}

void precompute(){
	for(int mask = 0; mask < (1 << m); mask++)
		for(int i = 0; i < m; i++)
			if(mask & (1 << i)) sum[mask] += b[i];
}

int main(){
	ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	
	wczytaj();	
	precompute();
	
	vector<bool> DP(1<<m);
	DP[0] = 1;
	
	for(int i = 0; i < n; i++){
		vector<bool> tmp(1<<m);
		for(int mask = 0; mask < (1 << m); mask++){
			if(!DP[mask]) continue;
			
			int alter = ((1 << m) - 1) ^ mask;
			for(int submask = alter; submask; submask = (submask - 1) & alter)
				if(sum[submask] == a[i]) tmp[mask | submask] = true;
		}
		DP = tmp;
	}
	
	for(int mask = 0; mask < (1 << m); mask++)
		if(DP[mask]){
			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...