Pagini recente » Cod sursa (job #323627) | Cod sursa (job #2280777) | Cod sursa (job #2432021) | Cod sursa (job #2045638) | Cod sursa (job #268387)
Cod sursa(job #268387)
#include <cstdio>
#include <algorithm>
#define maxn 200010
using namespace std;
int n, m, i, j, l, ct, mq, nr;
int v[maxn], q[maxn];
long long t[1000001], tot, sum, s, dmax, p[1000001];
int main() {
freopen("caramizi.in", "r", stdin);
freopen("caramizi.out", "w", stdout);
scanf("%d%d", &n, &m);
for (i = 1; i <= n; i++)
scanf("%d", &v[i]);
sort(v + 1, v + n + 1);
for (i = 1; i <= m; i++)
scanf("%d", &q[i]);
mq = 1000000;
i = 1; sum = 0;
for (l = 1; l <= mq; l++) {
while (v[i] < l && i <= n) {
sum += v[i];
i++;
}
ct = n - i + 1;
tot = (1LL * l * ct) + sum;
t[l] = tot / l;
t[l] *= l;
if (t[l - 1] > t[l])
t[l] = t[l - 1];
}
for (l = sum / v[n]; l >= 1; l--)
p[l] = max(sum - sum % l, p[l + 1]);
for (i = 1; i <= m; i++)
if (q[i] <= mq)
printf("%lld\n", t[q[i]]);
else
printf("%lld\n", p[sum / q[i] + 1]);
return 0;
}