Submission #594018

#TimeUsernameProblemLanguageResultExecution timeMemory
594018leroycutBank (IZhO14_bank)C++17
19 / 100
63 ms5356 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using ld = long double; const int N = 100003, mod = 1e9 + 7, inf = 1e9 + 7; bool dp[21][(1 << 21)]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen("movie.in", "r", stdin); // freopen("movie.out", "w", stdout); int n, m; cin >> n >> m; vector<int> vn(n), vm(m), sum((1 << m)); for(int i = 0; i < n; ++i){ cin >> vn[i]; } for(int j = 0; j < m; ++j){ cin >> vm[j]; } for(int s = 1; s < (1 << m); ++s){ for(int i = 0; i < m; ++i){ if((s & (1 << i))) sum[s] += vm[i]; } if(sum[s] == vn[0]) dp[0][s] = true; } for(int i = 1; i < n; ++i){ for(int s = 1; s < (1 << m); ++s){ if(sum[s] == vn[i]){ if(dp[i - 1][(1 << m) - 1 - s]){ dp[i][s] = true; } } } } bool ans = false; for(int s = 1; s < (1 << m); ++s){ if(dp[n - 1][s]){ ans = true; } } if(ans){ cout << "YES"; } else{ cout << "NO"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...