Submission #474853

#TimeUsernameProblemLanguageResultExecution timeMemory
474853ismoilovBank (IZhO14_bank)C++14
100 / 100
137 ms8524 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define IOS ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); void S() { 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 <pair<int, int>> dp(1<<m, make_pair(-1, 0)); dp[0] = {0, 0}; for(int mask = 0; mask < (1 << m); mask ++){ for(int i = 0; i < m; i ++){ if((mask >> i) & 1){ auto it = dp[mask ^ (1 << i)]; if(it.first != -1){ if(it.second + b[i] == a[it.first]) it.first ++, it.second = 0; else if(it.second + b[i] < a[it.first]) it.second +=b[i]; else it.first = -1, it.second = 0; dp[mask] = max(dp[mask], it); } } } if(dp[mask].first == n){ cout << "YES"; return; } } cout << "NO"; } int main() { IOS; /*int t; cin >> t; while(t --)*/ S(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...