Submission #333018

#TimeUsernameProblemLanguageResultExecution timeMemory
333018nandonathanielBank (IZhO14_bank)C++14
71 / 100
853 ms262148 KiB
#include<bits/stdc++.h>
using namespace std;

vector<int> v[1000005];
vector<int> valid[20];
int a[20],b[20];

int main(){
	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n,m;
	cin >> n >> m;
	for(int i=0;i<n;i++)cin >> a[i];
	for(int i=0;i<m;i++)cin >> b[i];
	for(int i=0;i<(1<<m);i++){
		int uang=0;
		for(int j=0;j<m;j++){
			if((1<<j) & i)uang+=b[j];
		}
		v[uang].push_back(i);
	}
	if(v[a[0]].empty()){
		cout << "NO\n";
		return 0;
	}
	valid[0]=v[a[0]];
	for(int i=1;i<n;i++){
		if(v[a[i]].empty()){
			cout << "NO\n";
			return 0;
		}
		vector<int> bisa;
		for(auto isi : valid[i-1]){
			for(auto isi2 : v[a[i]]){
				if((isi&isi2)==0)valid[i].push_back(isi+isi2);
			}
		}
		if(valid[i].empty())break;
	}
	if(valid[n-1].empty())cout << "NO\n";
	else cout << "YES\n";
	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...