제출 #1303911

#제출 시각아이디문제언어결과실행 시간메모리
1303911cavanar은행 (IZhO14_bank)C++20
100 / 100
812 ms22996 KiB
#include "bits/stdc++.h"

#define FOR(i,a,b)for(int i=(a);i<(b);i++)
#define F0R(i,a)FOR(i,0,a)
#define ROF(i,a,b)for(int i=(b)-1;i>=(a);i--)
#define R0F(i,a)ROF(i,0,a)
#define REP(a)F0R(_,a)

using namespace std;

const int mxn=20;

int a[mxn],b[mxn],p[mxn+1],sm[1<<mxn];
bool dp[mxn+1][1<<mxn];

int main(){
	cin.tie(nullptr)->sync_with_stdio(false);
	int n,m;cin>>n>>m;
	F0R(i,n)cin>>a[i];
	F0R(i,m)cin>>b[i];
	F0R(i,n)p[i+1]=p[i]+a[i];
	F0R(i,1<<m)dp[0][i]=true;
	F0R(i,1<<m)F0R(j,m)if(i&(1<<j))sm[i]+=b[j];
	FOR(i,1,n+1)F0R(j,1<<m)if(dp[i-1][j]){
		int ss=sm[j];
		if(ss==p[i-1]+a[i-1])dp[i][j]=true;
		F0R(k,m)if(j&(1<<k))dp[i][j]=dp[i][j] or dp[i][j^(1<<k)];
	}
	cout<<(dp[n][(1<<m)-1]?"YES":"NO")<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...