Pagini recente » Cod sursa (job #1240297) | Cod sursa (job #921299) | Cod sursa (job #856497) | Cod sursa (job #806348) | Cod sursa (job #266161)
Cod sursa(job #266161)
#include <stdio.h>
#include <algorithm>
#define maxn 1000010
using namespace std;
long long n, i, j, k, m, t, ma, x;
long long d[maxn], sol[maxn], q, poz, sol2[maxn], h, rez;
int main()
{
freopen("caramizi.in", "r", stdin);
freopen("caramizi.out", "w", stdout);
scanf("%lld%lld", &n, &m);
for(i=1; i<=n; i++)
{
scanf("%lld", &d[i]);
}
sort(d+1, d+n+1);
t=-1;
d[0]=1;
d[n+1]=maxn;
poz=1;
for(i=0; i<=n; i++)
{
t+=d[i];
for(j=d[i]; j<d[i+1]; j++)
{
x = t-t%j+(n-i)*j;
if(x>ma)
{
ma=x;
}
sol[j]=ma;
}
}
for(i=t/d[n]; i; i--)
{
sol2[i]=sol2[i+1];
if(t - t%i>sol2[i]) sol2[i]=t-t%i;
}
for(i=1; i<=m; i++)
{
scanf("%lld", &q);
if(q<=maxn)printf("%lld\n", sol[q]);
else
{
printf("%lld\n", sol2[t / q + 1]);
}
}
return 0;
}