제출 #332940

#제출 시각아이디문제언어결과실행 시간메모리
332940nandonathanielBank (IZhO14_bank)C++14
71 / 100
1101 ms127372 KiB
#include<bits/stdc++.h>
using namespace std;

vector<int> v[1000005];
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;
	}
	vector<int> valid;
	for(auto isi : v[a[0]])valid.push_back(isi);
	for(int i=1;i<n;i++){
		if(v[a[i]].empty()){
			cout << "NO\n";
			return 0;
		}
		vector<int> bisa;
		for(auto isi : valid){
			for(auto isi2 : v[a[i]]){
				if((isi&isi2)==0)bisa.push_back(isi+isi2);
			}
		}
		sort(bisa.begin(),bisa.end());
		bisa.erase(unique(bisa.begin(),bisa.end()),bisa.end());
		valid=bisa;
		if(valid.empty())break;
	}
	if(valid.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...