Pagini recente » Cod sursa (job #3185449) | Cod sursa (job #380466) | Cod sursa (job #270761) | Cod sursa (job #575210) | Cod sursa (job #266157)
Cod sursa(job #266157)
#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
{
h=t/q;
rez=sol[d[n]];
if(t > (long long)(h+1) * d[n]) rez=sol2[h+1];
printf("%lld\n", rez);
}
}
return 0;
}