Pagini recente » Cod sursa (job #561340) | Cod sursa (job #1301917) | Cod sursa (job #1530818) | Cod sursa (job #910318) | Cod sursa (job #2026331)
#include <bits/stdc++.h>
using namespace std;
int n, m;
const int Lmax = 1000000;
int f[Lmax + 5];
long long d[Lmax + 5], cp[Lmax + 5];
int main()
{
freopen("caramizi.in", "r", stdin);
freopen("caramizi.out", "w", stdout);
scanf("%d%d", &n, &m);
int x, Max = 0;
for(int i = 1; i <= n ; ++i){
scanf("%d", &x);
++f[x];
if(x > Max) Max = x;
}
long long Sum = 0;
int k = 0;
for(int i = 1; i <= Lmax ; ++i){
Sum = Sum + f[i] * i;
k += f[i];
d[i] = max(d[i - 1], Sum - Sum % i + 1LL * (n - k) * i);
}
for(int i = Sum / Max; i >= 1 ; --i)
cp[i] = max(cp[i + 1], Sum - Sum % i);
for(int i = 1; i <= m ; ++i){
scanf("%d", &x);
if(x <= Lmax) printf("%lld\n", d[x]);
else printf("%lld\n", cp[Sum / x]);
}
return 0;
}