Submission #1207745

#TimeUsernameProblemLanguageResultExecution timeMemory
1207745vijcodeBank (IZhO14_bank)C++20
100 / 100
105 ms16844 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int MOD = 1e9 + 7; signed main(){ int n, m; cin >> n >> m; vector<int> s(n); vector<int> notes(m); for(int i = 0; i < n; i++) cin >> s[i]; for(int i = 0; i < m; i++) cin >> notes[i]; vector<int> covered((1<<m) + 1, -1); vector<int> notes_left((1<<m) + 1, -1); covered[0] = 0; notes_left[0] = 0; for(int i = 1; i < (1<<m); i++){ for(int j = 0; j < m; j++){ if((1<<j) & i){ int prev = (1<<j) ^ i; if(covered[prev] == -1) continue; int curr_req = s[covered[prev]]; int prev_left = notes_left[prev]; int amt = prev_left + notes[j]; if(amt < curr_req){ covered[i] = covered[prev]; notes_left[i] = prev_left + notes[j]; } else if(amt == curr_req){ covered[i] = covered[prev] + 1; notes_left[i] = 0; } } } if(covered[i] == n){ cout << "YES" << endl; return 0; } } cout << "NO" << endl; return 0; } /* 1 5 8 4 2 5 1 3 2 6 9 10 5 4 8 6 3 11 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...