Submission #392374

#TimeUsernameProblemLanguageResultExecution timeMemory
392374SirCovidThe19thBank (IZhO14_bank)C++14
0 / 100
3 ms412 KiB
#include <bits/stdc++.h> using namespace std; int main(){ //n people, m banknotes int n, m; cin >> n >> m; int salary[n]; int banknote[m]; for (int i = 0; i < n; i++){ cin >> salary[i]; if (i != 0) salary[i] += salary[i-1]; } for (int i = 0; i < m; i++) cin >> banknote[i]; int dp[1<<m]; int sum[1<<m]; memset(dp, 0, sizeof(dp)); memset(sum, 0, sizeof(sum)); for (int i = 1; i < (1<<m); i++) for (int j = 0; j < m; j++) if ((i&(1<<j)) != 0) sum[i] += banknote[j]; bool valid = false; for (int i = 1; i < (1<<m); i++){ for (int j = 0; j < m; j++){ if ((i&(1<<j)) == 0) continue; if (sum[i^(1<<j)]+banknote[j] == salary[j]) dp[i] = max(dp[i], dp[i^(1<<j)]+1); else dp[i] = max(dp[i], dp[i^(1<<j)]); } if (dp[i] == n) valid = true; } if (valid) 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...