Submission #1216249

#TimeUsernameProblemLanguageResultExecution timeMemory
1216249A_M_NamdarBrunhilda’s Birthday (BOI13_brunhilda)C++20
100 / 100
253 ms44776 KiB
#include <bits/stdc++.h>
using namespace std;
 
const int N = 1e5 + 10, M = 1e7 + 10;
int m, q, p[N], dp[M];
set<pair<int, int>> s;
 
void input() {
	cin >> m >> q;
	for (int i = 0; i < m; i++) 
		cin >> p[i];
}
 
void solve() {
	for (int i = 0; i < m; i++) 
		s.insert({0, p[i]});
	for (int i = 1; i < M; i++) {
		dp[i] = 1e9 + 10;
		while (s.begin()->first != i - (i % s.begin()->second)) {
			int tmp = s.begin()->second;
			s.erase(s.begin());
			s.insert({i - (i % tmp), tmp});
		}
		dp[i] = min(dp[i], dp[i - (i % (s.begin())->second)] + 1);
	}
	while (q--) {
		int n;
		cin >> n;
		if (dp[n] > 1e9) cout << "oo\n";
		else cout << dp[n] << '\n';
	}
}
 
int main() {
	ios:: sync_with_stdio(0), cin.tie(0), cout.tie(0);
	input();
	solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...