제출 #1287119

#제출 시각아이디문제언어결과실행 시간메모리
1287119michael12은행 (IZhO14_bank)C++20
100 / 100
109 ms39552 KiB
#include<bits/stdc++.h> #define ff first #define ss second using namespace std; pair<int, int> dp[5000000]; int main(){ 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]; } memset(dp, -1, sizeof(dp)); dp[0] = {0, 0}; for(int mask = 0; mask < (1 << m); mask++){ for(int j = 0; j < m; j++){ if(!(mask & (1 << j))) continue; int pre = mask ^ (1 << j); if(dp[pre].ff == -1) continue; int her = dp[pre].ss + b[j]; int need = a[dp[pre].ff]; if(her < need){ dp[mask] = {dp[pre].ff, her}; } if(her == need){ dp[mask] = {dp[pre].ff + 1, 0}; } } if(dp[mask].ff == n){ cout << "YES"; return 0; } } cout << "NO"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...