Submission #1126646

#TimeUsernameProblemLanguageResultExecution timeMemory
1126646Halym2007Brunhilda’s Birthday (BOI13_brunhilda)C++17
100 / 100
248 ms79272 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define sz size()
#define ff first
#define ss second
#define pb push_back
#define pii pair <int, int>
#define dur exit(0)
#define dur1 return(0)
const int N = 1e5 + 5;
const int M = 1e7 + 5;
int a[N], ayyr[M], dp[M];

int main () {
//	freopen ("input.txt", "r", stdin);
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int n, q;
	cin >> n >> q;
	int bar = 1;
	for (int i = 1; i <= n; ++i) {
		cin >> a[i];
		if (bar > M) continue;
		bar *= a[i];
	}
	for (int i = 1; i <= n; ++i) {
		for (int j = a[i] - 1; j < M; j += a[i]) {
			ayyr[j] = max (ayyr[j], a[i] - 1);
		}
		ayyr[M - 1] = max (ayyr[M - 1], (M - 1) % a[i]);
	}
	for (int i = M - 2; i >= 0; i--) {
		ayyr[i] = max (ayyr[i], ayyr[i + 1] - 1);
	}
	for (int i = 1; i < M; ++i) {
		dp[i] = dp[i - ayyr[i]] + 1;
	}
	while ( q-- ) {
		int x;
		cin >> x;
		if (bar > x) cout << dp[x] << "\n";
		else cout << "oo\n";
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...