Submission #392720

#TimeUsernameProblemLanguageResultExecution timeMemory
392720saarang123Brunhilda’s Birthday (BOI13_brunhilda)C++17
100 / 100
402 ms82244 KiB
#include <bits/stdc++.h> using namespace std; const int mxn = 10 * 1000 * 1000 + 200 * 1000; const int inf = 2e9; int dp[mxn], sub[mxn]; int m, q; signed main() { std::ios::sync_with_stdio(0); std::cout.tie(0); std::cin.tie(0); #ifdef saarang freopen("/home/saarang/Documents/cp/input.txt", "r", stdin); freopen("/home/saarang/Documents/cp/output.txt", "w", stdout); #endif cin >> m >> q; memset(dp, 0x7f, sizeof dp); vector<int> p(m); for(int i = 0; i < m; i++) cin >> p[i]; sort(p.begin(), p.end()); dp[0] = 0; for(int i = 1; i < p.back(); i++) dp[i] = 1; for(int i = 0; i < m; i++) for(int j = p[i] - 1; j < mxn; j += p[i]) sub[j] = max(sub[j], p[i] - 1); for(int i = mxn - 2; i >= 0; i--) sub[i] = max(sub[i], sub[i + 1] - 1); for(int i = p.back(); i < mxn; i++) dp[i] = min(dp[i], dp[i - sub[i]] + 1); while(q--) { int n; cin >> n; if(dp[n] >= inf) cout << "oo\n"; else cout << dp[n] << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...