Cod sursa(job #749564)
#include <algorithm>
#include <cstdio>
#define INF 1000005
#define DIM 200005
#define ll long long
using namespace std;
ll Rez[INF],Size[INF];
ll Sum=-1;
int A[DIM];
int N,M,x;
int main()
{
freopen ("caramizi.in","r",stdin);
freopen ("caramizi.out","w",stdout);
scanf ("%d%d",&N,&M);
for (int i=1; i<=N; ++i)
scanf ("%d",&A[i]);
A[0]=1,A[N+1]=INF;
sort (A+1,A+N+1);
for (int i=0; i<=N; ++i)
{
Sum+=A[i];
for (ll j= A[i] ; j<A[i+1]; ++j)
Rez[j]=max (Rez[j-1], Sum-Sum%j+(N-i)*j);
}
for (ll i=Sum/A[N]; i; --i)
Size[i]=max (Sum-Sum%i,Size[i+1]);
for (int i=1; i<=M; ++i )
{
scanf ("%d",&x)
printf ("%lld\n",(x<INF) ? Rez[x] : Size[Sum/x+1]);
}
}