Pagini recente » Cod sursa (job #386491) | Autentificare | Cod sursa (job #3210064) | Cod sursa (job #532871) | Cod sursa (job #749568)
Cod sursa(job #749568)
#include <algorithm>
#include <cstdio>
#define INF 1000005
#define DIM 200005
#define max(a,b) ( (a>b) ? a : b )
#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 (int i=Sum/A[N]; i; --i)
Size[i]=max (Sum-Sum%i,Size[i+1]);
for ( ;M;--M )
{
scanf ("%d",&x);
printf ("%lld\n",(x<INF) ? Rez[x] : Size[Sum/x+1]);
}
}