제출 #155734

#제출 시각아이디문제언어결과실행 시간메모리
155734shuvi_dolaBrunhilda’s Birthday (BOI13_brunhilda)C++14
17.78 / 100
1107 ms262148 KiB
#include <bits/stdc++.h> using namespace std; const int N = 1e5 + 3;; const int lim = 1e7 + 3; const int inf = 1e9 + 9; int p[N], m, q; int dp[lim]; string s; int dfs(int u) { if(dp[u] != inf) return dp[u]; if(u == 0) return 0; int cnt = 0; for(int i = 1; i <= m; i++) { if(u % p[i] == 0 && u != 0) { cnt ++; continue; } dp[u] = min(dp[u], dfs(u - u % p[i]) + 1); } if(cnt == m) { dp[u] = inf - 1; return inf - 1; } return dp[u]; } int main() { for(int i = 1; i < lim; i++) { dp[i] = inf; } cin >> m >> q; for(int i = 1; i <= m; i++) { cin >> p[i]; } sort(p + 1, p + 1 + m); for(int i = 1; i <= q; i++) { int n; cin >> n; dfs(n); if(dp[n] == inf - 1) cout << "oo\n"; else cout << dp[n] << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...