Pagini recente » Cod sursa (job #2394812) | Cod sursa (job #2043615) | Cod sursa (job #1314728) | Cod sursa (job #1397525) | Cod sursa (job #1007853)
# include <algorithm>
# include <cstdio>
using namespace std;
typedef long long ll;
const char *FIN = "caramizi.in", *FOU = "caramizi.out";
const int MAX = 200005, oo = 1000005;
ll sol = -1, dp[oo], rez[oo];
int N, M, C[MAX];
int main (void) {
freopen (FIN, "r", stdin);
freopen (FOU, "w", stdout);
scanf ("%d %d", &N, &M);
for (int i = 1; i <= N; ++i)
scanf ("%d", C + i);
C[0] = 1, C[N + 1] = oo;
sort (C + 1, C + N + 1);
for (int i = 0; i <= N; ++i) {
sol += C[i];
for (int j = C[i]; j < C[i + 1]; ++j)
dp[j] = max (dp[j - 1], sol - sol % (j * 1LL) + 1LL * (N - i) * j);
}
for (int i = sol / C[N]; i; --i)
rez[i] = max (sol - sol % i, rez[i + 1]);
for (int i = 1, x; i <= M; ++i) {
scanf ("%d", &x);
printf ("%lld\n", x < oo ? dp[x] : rez[sol / x + 1]);
}
}