Pagini recente » Cod sursa (job #1646157) | Cod sursa (job #889963) | Cod sursa (job #2910848) | Cod sursa (job #1796029) | Cod sursa (job #847719)
Cod sursa(job #847719)
#include <algorithm>
#include <cstdio>
#define INF 1000005
#define DIM 200005
#define ll long long
using namespace std;
ll v[INF],h[INF];
ll sum=-1;
int c[DIM];
int n,m;
void read ()
{
int i;
scanf ("%d%d",&n,&m);
for (i=1; i<=n; ++i)
scanf ("%d",&c[i]);
c[0]=1;
c[n+1]=INF;
}
void solve ()
{
ll i,j;
for (i=0; i<=n; ++i)
{
sum+=c[i];
for (j=c[i]; j<c[i+1]; ++j)
{
v[j]=sum-sum%j+(n-i)*j;
if (v[j-1]>v[j])
v[j]=v[j-1];
}
}
for (i=sum/c[n]; i; --i)
h[i]=max (sum-sum%i,h[i+1]);
}
void query ()
{
int i,x;
for (i=1; i<=m; ++i)
{
scanf ("%d",&x);
if (x<INF)
printf ("%lld\n",v[x]);
else
printf ("%lld\n",h[sum/x+1]);
}
}
int main ()
{
freopen ("caramizi.in","r",stdin);
freopen ("caramizi.out","w",stdout);
read ();
sort (c+1,c+n+1);
solve ();
query ();
return 0;
}