Submission #579875

#TimeUsernameProblemLanguageResultExecution timeMemory
579875karriganBank (IZhO14_bank)C++14
100 / 100
450 ms112568 KiB
#include <bits/stdc++.h>
using namespace std;
vector<long long>c[1009];
long long a[1009];
long long b[1009];
long long dp[21][1<<20];
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    //freopen("bank.in","r",stdin);
    //freopen("bank.out","w",stdout);
   int n,m;
   cin>>n>>m;
   for (int i=1;i<=n;i++)cin>>a[i];
   for (int i=1;i<=m;i++)cin>>b[i];
   for (int i=0;i<(1<<m);i++){
   	long long temp=0;
   	for (int j=0;j<m;j++){
   		if (i>>j&1){
   			temp+=b[j+1];
   		}
   	}
   	if (temp<=1000){
   		c[temp].push_back(i);
   	}
   }
   dp[0][0]=1;
   for (int i=1;i<=n;i++){
   	for (int j=0;j<(1<<m);j++){
   		if (dp[i-1][j]==1){
   			for (auto v:c[a[i]]){
   				if ((j&v)==0){
   					dp[i][j+v]=1;
   				}
   			}
   		}
   	}
   }
   	for (int j=0;j<(1<<m);j++){
   		if (dp[n][j]==1){
   			cout<<"YES";
   			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...