Submission #1196421

#TimeUsernameProblemLanguageResultExecution timeMemory
1196421mkrtich_2010_Bank (IZhO14_bank)C++20
52 / 100
270 ms264916 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; int main(){ ll n, m; cin>>n>>m; vector<ll> a(n); vector<ll> b(m); vector<vector<ll>> dp(1<<m, vector<ll>(n)); for(ll i = 0; i < n; i++) cin>>a[i]; for(ll i = 0; i < m; i++) cin>>b[i]; vector<vector<ll>> c(1001); for(ll i = 0; i < (1<<m); i++){ ll sum = 0; for(ll j = 0; j < m; j++){ if(i&(1<<j)){ sum += b[j]; } if(sum <= 1000) c[sum].push_back(i); } } for(auto i : c[a[0]]){ dp[i][0] = 1; } for(ll i = 0; i < (1<<m); i++){ for(ll j = 0; j < n-1; j++){ if(dp[i][j] == 0) continue; for(ll k : c[a[j+1]]){ if(i & k) continue; dp[i | k][j+1] = 1; } } if(dp[i][n-1] == 1){ cout<<"YES"<<endl; return 0; } } cout<<"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...