제출 #1241060

#제출 시각아이디문제언어결과실행 시간메모리
1241060MasterDebater은행 (IZhO14_bank)C++20
100 / 100
105 ms16828 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=25,P=(1<<20);
ll n,m,a[N],b[N],o[P],dp[P];
int main(){
	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=1;i<P;i++)dp[i]=o[i]=-1;
	for(int i=0;i<(1<<m);i++)for(int j=0;j<m;j++)if((i>>j)&1){
		int k=i^(1<<j);
		if(dp[k]==-1)continue;
		if(o[k]+b[j]==a[dp[k]]){
			dp[i]=dp[k]+1;
			o[i]=0;
		}
		else if(o[k]+b[j]<a[dp[k]]){
			dp[i]=dp[k];
			o[i]=o[k]+b[j];
		}
	}
	for(int i=0;i<P;i++)if(dp[i]==n){
		cout<<"YES\n";
		return 0;
	}
	cout<<"NO";
	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...