Submission #1269331

#TimeUsernameProblemLanguageResultExecution timeMemory
1269331mj5aifBank (IZhO14_bank)C++20
100 / 100
427 ms25532 KiB
/**
*  Problem Name: Bank
*  Author: MJ
*  Created: 13 September 2025, Saturday (03:40:33)...
**/

#include<bits/stdc++.h>
using namespace std;

#define int int64_t
#define nl '\n' 

void answer_to_the_question(){
   int n,m;          cin>>n>>m;

   vector<int> a(n),b(m);
   for(int i=0;i<n;i++) cin>>a[i];
   for(int i=0;i<m;i++) cin>>b[i];

   vector<int> sum(1<<m),mask[20003];
   for(int k=1;k<(1<<m);k++){
      for(int i=0;i<m;i++)if(k&(1<<i)){
         sum[k]+=b[i];
      }
      mask[sum[k]].push_back(k);
   }

   vector<vector<bool>> dp(n,vector<bool> (1<<m,false));
   for(auto &i: mask[a[0]]) dp[0][i]=true;

   int tm=a[0];
   for(int i=1;i<n;i++){
      tm+=a[i];

      for(auto &k: mask[tm]){

         for(auto &j: mask[a[i]]){
            if((k&j)==j){
               dp[i][k]=(dp[i][k] || dp[i-1][j^k]);
            }
         }
      }
   }

   for(int k=0;k<(1<<m);k++)if(dp[n-1][k]){
      cout<<"YES"<<nl;
      exit(0);
   }

   cout<<"NO"<<nl;
}

int32_t main(){
   ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

   answer_to_the_question();

   return 0;
}

// .... headlock, You Know You'r better than this.
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...